例子
static size_t sn;
class employee
//employee(const std::string &s) :name(new std::string(s)){}
size_t getid()const
std::string getname()const
};void print(const employee s)
employee a;//此處呼叫a的預設建構函式,name智慧型指標會初始化為空
employee b("zhangyi"), c = b;
//print(a); //name指標為空,不能進行訪問,程式執行出錯
print(b);
print(c);
防止指標指空,執行時注意if檢查;
智慧型指標可以用在合成拷貝函式,合成拷貝賦值運算子下,使乙個類的物件初始化另外乙個類(含有智慧型指標資料成員的類)
對於含有普通指標的類,而且構造時給它動態分配了記憶體空間,必須要自己定義析構函式(顯示delete),然而一旦乙個類定義了析構函式,那麼它幾乎肯定也需要乙個拷貝建構函式和乙個拷貝賦值運算子(c++ primer p447),定義行為像值得類,和定義行為像指標的類;
C語言注意問題 空指標
1 空指標表示 未分配 或者 尚未指向任何地方 它與未初始化的指標不同,未初始化的指標可能指向任何地方。每種指標型別都要乙個空指標,而不同型別的空指標的內部可能不盡相同。2 一般給指標賦值0就是將指標設為空指標 等同設為null 但是0作為函式引數,傳給指標時需要對0作型別轉換。3 可以使用if p...
C語言 空指標與不指向任何物件的指標的區別
指標是儲存位址的變數。空指標是初始化為null的指標,其指向的狀態是確定的。不指向任何物件的指標是沒有初始化的指標,其指向的狀態是由編譯器來確定的。其狀態不能確定。空指標並不是安全的指標,空指標同樣有可能破壞系統的安全性。我們使用空指標,只是因為其指向null這個確定的狀態,並且程式設計師 們約定好...
c 空指標,野指標
當給空指標所指的位址賦值時,會報錯 int p nullptr p 10 int p 野指標,未初始化int p new int delete p 刪除後不知道p指向 include using namespace std class a void a func void void test voi...