限定用戶只能讀而不能寫類數據成員的方法
方法1:可以通過使用常引用,如下所示
class Vector
{
public:
const int & length;//使用構造函數將length綁定到true_length上
//...
private:
int true_length;
};
方法2:通常還是使用如下方式
class Vector
{
public:
int length() const;
//...
private:
int true_length;
};
如果一個類需要顯式的調用構造函數,也就是說它沒有一個默認構造函數,則試圖生成該類對象的數組是非法的
構造函數的用途是用一種明確定義的狀態來設置對象
假設D繼承自B,只要存在對指向D類型對象的B*指針執行delete表達式,就需要對B加上一個虛析構函數,無論B是否有動態分配內存的數據成員
如果不想用戶能夠復制類的成員,就聲明復制構造函數為私有的
類X的賦值操作符應該返回X&,注意對象的自我復制問題,賦值操作符的一般形式如下:
X& X::operator=(const X& x)
{
if(this != &x)
{...}
return *this;
}
一定要記得在復制構造函數和賦值操作符的參數類型中加上const,由於綁定一個非const引用到一個臨時的對象是非法的,所以使用X::X(X&)作為復制構造函數不會允許復制任何特殊表達式的結果,X& X::operator=(const X&)也是如此
只有當函數想改變參數時,它才應該有不用const聲明的引用參數
作者 yucan1001