- 常量成員函數(shù)
class Sample
{
public:
int value;
void GetValue() const;
void func() {};
Sample() {}
};
void Sample::GetValue() const
{
value = 0;//wrong
func();//wrong
}
int main()
{
const Sample o;
o.value = 100;//err 常量不可以被修改
o.func();//err,常量對(duì)象上面不能執(zhí)行非常量成員函數(shù)
o.GetValue();//ok,常量對(duì)象上可以執(zhí)行常量成員函數(shù)
return 0 ;
}
- 常量成員函數(shù)的重載
- 兩個(gè)成員函數(shù)恬偷,名字和參數(shù)表都一樣悍手,但是一個(gè)是 const,一個(gè)不是袍患,算重載坦康。
class CTest{
private :
int n;
public:
CTest(){n = 1;}
int GetValue() const {return n;}
int GetValue() {return 2*n;}
};
int main()
{
const CTest objTest1;
CTest objTest2;
cout<<objTest1.GetValue()<<","<<objTest2.GetValue();
return ();
}
- 常引用
- 引用前面可以添加 const 關(guān)鍵字,成為常引用诡延。不能通過常引用滞欠,修改其引用的變量。
const int &r = n;
r = 5;//error
n = 4;//ok
- ***常引用會(huì)經(jīng)常被用于函數(shù)的參數(shù):對(duì)象作為函數(shù)的參數(shù)時(shí)候肆良,生成該參數(shù)需要調(diào)用復(fù)制構(gòu)造函數(shù)筛璧,效率比較低。用指針作參數(shù)惹恃,代碼又不好看夭谤,如何解決?***
可以用對(duì)象的引用作為參數(shù)巫糙,但是又怕引用被無意間修改朗儒,所以可以使用常引用:
class Sample{
};
void PrintObj(const Sample & o )
{
}