C++中的static函数和const函数-创新互联

C++中的static函数和const函数

超过十多年行业经验,技术领先,服务至上的经营模式,全靠网络和口碑获得客户,为自己降低成本,也就是为客户降低成本。到目前业务范围包括了:成都网站设计、成都网站建设,成都网站推广,成都网站优化,整体网络托管,小程序制作,微信开发,app软件开发公司,同时也可以让客户的网站和网络营销和我们一样获得订单和生意!一、static特点

1.这样的函数只能在本文件中被调用
2.在同–源程序中其他文件可以定义同名的函数

#includeusing namespace std;
//static的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
//2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
//3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那
	class Std{public:
		Std()//构造函数
		{	cout<<__func__<<":"<<__LINE__<	cout<<__func__<<":"<<__LINE__<	cout<<__func__<<":"<<__LINE__<this->val=val;
	return;
	}
	int getval()
	{return this->val;
	}
	static int getmyval()//static静态变量的访问接口
	{return myval;
	}
	static int *myvaladdr()
	{return &myval;
	}
	private:
	int val;
	static int myval;//静态成员变量,类的成员,与对象无关
	};
	 int Std::myval=123;//static成员变量使用前必须在类的外部声明定义初始化

int main(int argc, char *argv[])
{Std obj;
	obj.setval(10);
cout<
二.C中const关键字的用法
1)修饰变量,变量是只读变量,即变量只能初始化,不能被修改
	eg:
const int val = 123;//初始化
			val = 321;//error
2)const修饰指针
const int *p;//不能通过指针p修改p指向的内容 等价:int const *p;
		int * const p;//不能修改p的指向
		const int * const p;//既不能通过指针p修改p指向的内容,也不能修改p的指向

2.C++中const用法
1)const修饰成员变量:必须使用初始化列表初始化
例:

#includeusing namespace std;

    class Demo{public:
            Demo(int val=0,int val1=0) : val1(val1),val(val)  //使用初始化列表对成员变量val val1初始化
            {this->val = val;//赋值
                //this->val1 = val1; //const成员是只读的,只能初始化,不能修改
                cout<< __func__<< ":"<< __LINE__<< endl;
            }

            ~Demo()
            {cout<< __func__<< ":"<< __LINE__<< endl;
            }
        public:
            void setval(int val)
            {this->val = val;

                return ;
            }

            int getval()
            {   
                return this->val;
            }

            int getval1() 
            {return this->val1;
            }

        private:
            int val;
            const int val1;//const成员变量
			
    };


    int main()
    {Demo obj(123,321);
        cout<< obj.getval1()<< endl;

        return 0;
    }
2)const修饰成员方法: 不能通过此方法修改对象
	即:
		const方法只能调用const方法
		const方法不能调用非const方法
		const方法可以修改static成员变量
例:
#includeusing namespace std;

class Demo{public:
        Demo(int val=0,int val1=0) : val1(val1),val(val)  //使用初始化列表对成员变量val val1初始化 重点:不能通过初始化列表对static成员变量初始化
        {this->val = val;//赋值
            //this->val1 = val1; //const成员是只读的,只能初始化,不能修改
            cout<< __func__<< ":"<< __LINE__<< endl;
        }

        ~Demo()
        {cout<< __func__<< ":"<< __LINE__<< endl;
        }
    public:
        void setval(int val)
        {this->val = val;

            return ;
        }

        int getval() const  //const成员方法:不能修改类对象
        {//val++;//error 
            //setval(666);//error 原因:const方法不能调用非const方法,因为非const方法有可能修改类对象
            getval1();//right 原因:const方法可以调用const方法
            myval++;//right 原因:myval是static成员,不属于对象
            return this->val;
        }

        int getval1() const
        {return this->val1;
        }

    private:
        int val;
        const int val1;//const成员变量
		static int myval;
};
int Demo::myval = 123;

int main()
{Demo obj(123,321);
    cout<< obj.getval1()<< endl;

    return 0;
}
3)const修饰对象:表示对象是只读,即对象不能被修改
	const对象只能调用const方法
	const对象也可以调用static方法
	const对象不能调用非const方法
	
	eg:
#includeusing namespace std;

        class Demo{public:
                Demo(int val=0,int val1=0) : val1(val1) //使用初始化列表对成员变量val val1初始化
                {this->val = val;//赋值
                    //this->val1 = val1; //const成员是只读的,只能初始化,不能修改
                    cout<< __func__<< ":"<< __LINE__<< endl;
                }

                ~Demo()
                {cout<< __func__<< ":"<< __LINE__<< endl;
                }
            public:
                void setval(int val)
                {this->val = val;

                    return ;
                }

                int getval() const  //const成员方法:不能修改类对象
                {//val++;//error 
                    myval++;//right 原因:myval是static成员
                    return this->val;
                }

                int getval1() const
                {return this->val1;
                }

                static int getmyval()
                {return myval;
                }

            private:
                int val;
                const int val1;//const成员变量
                static int myval;//static成员

        };

        int Demo::myval = 123;

        int main()
        {const Demo obj;//const对象

            //obj.setval(666);//error obj是const对象,只能调用const方法

            cout<< obj.getval()<< endl;//right const对象可以调用const方法
            cout<< obj.getmyval()<< endl;//right getmyval()是static方法,是类的成员

            return 0;
        }

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文名称:C++中的static函数和const函数-创新互联
当前网址:http://cdiso.cn/article/ijsoi.html