標籤:student his style 地址 opera mem 參數 變數 最佳化
一、引用和指標的定義
引用:它是給另一個變數取一個別名,不會再次分配空間(可以帶來程式的最佳化)
指標:它是一個實體,需要分配空間
引用在定義的時候必須進行初始化,並且空間不能夠改變。
指標在定義的時候不一定要初始化,並且指向的空間可變。(註:引用的值不能為NULL)---------->可以帶來程式的安全性
引用訪問一個變數是直接存取,而指標訪問一個變數是間接訪問
二、C++初始化函數6個預設函數
1.建構函式
2.解構函式
3.拷貝建構函式(當函數參數為對象時候) ------->淺拷貝 深拷貝
Text t1;
Text t2(t1)
Text t2 = t1;
4.賦值函數 ----------->淺賦值 深賦值
Text t1;
Text t2;
t2 = t1;
5.Text a;
Text *b = &a;
Text* operator&(){ return this};
6.const Text a (常對象);
const Text *b = &a;
const Text* operator(){return this};
三、深拷貝、淺拷貝
執行過程:調用一次建構函式,一次自訂拷貝建構函式,兩次解構函式。兩個對象的指標成員所指記憶體不同。
淺拷貝只是對指標的拷貝,拷貝後兩個指標指向同一個記憶體空間
深拷貝不但對指標進行拷貝,而且對指標指向的內容進行拷貝,經深拷貝後的指標是指向兩個不同地址的指標。
Student::Student(){ name = new char(20); cout << "Student " << endl;}Student::~Student(){ cout << "~Student " << (int)name << endl; delete name; name = NULL;}Student::Student(const Student &s){ name = new char(20); memcpy(name, s.name, strlen(s.name)); cout << "copy Student " << endl;}
C++引用和指標的區別