C++中的const
const
C++定义一个常量. const int AA = 10;##修饰 成员变量: 有些属性,一经初始化 就不在允许改动,比如 性别 证件号 class person { public: const int id; //只允许初始化一次,以后再也不会改动了 const string sex; //在哪里初始化--##只能在构造 ### string name; int age; person(string sex,int id,string name) { this->sex=sex; this->id=id; this->name=name; } void show() { } };
#include<iostream>
using namespace std;
class person {
public:
const int id; //只允许初始化一次,以后再也不会改动了
const string sex; //在哪里初始化--####只能在构造 ###
string name;
int age;
person(string xsex,int xid,string xname) : id(xid),sex(xsex)
{
cout<<"in person(sex,id,name)"<<endl;
//this->sex=sex; this->id=id; 报错,因为程序不允许改动const常量
// const int aa=4; 以前 定义的时候赋值,编译器搞定的
// aa=8; 程序动态改变,不允许的
//初始化const成员只能在 构造函数的 初始化列表中实现,而且要求 每个构造必须初始化所有的const
this->name=xname;
}
//person() {} 非法,编译器要求所有的构造 必须初始化所有 const成员
#if 0
void set_sex(string sex)
{
this->sex=sex; //编译器报错,不允许的操作
}
#endif
void show() const
{
cout<<"id="<<id <<" sex="<<sex<<" name="<<name<<endl;
//age = 2; 非法,const函数不能试图修改任何成员
}
void set_name(string name){ this->name=name; }
/*修饰函数
有时候我们期望 某个函数不要改动任何东西,为了彻底的保证 他不改动任何成员
我们使用const修改该函数. 编译器一旦发现const函数试图改变任何成员,就报错.
返回值 函数名(参数) const { 函数体 ;}
*/
};
int main()
{
person xiaowang("man",22070401,"xiaowang");
xiaowang.show();
}