我经常发现有这样一种需求:需要一个const对象,但是在定义的时候又无法确定值,怎样实现这样一个对象,意即只能赋一次值,后续不允许修改,想了半天也没想到办法
举例说吧,现在有个int a;为全局变量,但是a此时还不能确定值,故不能定义为const int a;我们在main()中将a赋值为a = 123;之后,我们不希望a被修改,怎么实现?
我经常发现有这样一种需求:需要一个const对象,但是在定义的时候又无法确定值,怎样实现这样一个对象,意即只能赋一次值,后续不允许修改,想了半天也没想到办法
举例说吧,现在有个int a;为全局变量,但是a此时还不能确定值,故不能定义为const int a;我们在main()中将a赋值为a = 123;之后,我们不希望a被修改,怎么实现?
class const_int
{
private:
int a;
bool b;
public:
const_int():a(0), b(false) {}
const_int & operator=(const int i) { if (!b) a = i; }
const_int & operator=(const_int &);
}
大概这样.
看<<c++ primary plus>>关于const的应用直接就给我看晕了,很多大神说c++是变态语言,当时体会真是这样。
重载运算符的确是个好方法,不过你忘了写operator=需要返回当前对象实例,即return *this
C++的确是个变态语言,越用越觉得它变态
嗯 忘了
怎么就变态了呢? 很多语言都不能先定义个const然后跑其他地方赋值吧?
在类中可以用初始化列表的方式初始化const
class test{
private:
const int a;
public:
test(int x):a(x){}
void print()const{
cout<<a<<endl;//>>>>
}
};
在过程调用中更可以用mutable关键字修改const类型函数