建立類的時候,對於有指標的成員變數,一定要新增拷貝建構函式和等號(=)過載符。否則進行的是指標指向複製,也就是淺拷貝,類銷毀時會重複銷毀,造成軟體crash。
1. 建立teacher類
2. 新增拷貝建構函式(深拷貝)
3. 新增等號(=)過載符
class teacher
//拷貝構造
teacher(const teacher& t)
//過載=
teacher& operator=(teacher& t)
this->name = new char[len];
strcpy(this->name, t.name);
this->age = t.age;
return *this;
} ~teacher()
this->age = 0;
} char* name;
int age;
};
拷貝建構函式和運算子過載
拷貝建構函式應用的場合由以下幾個方面 1 函式的引數是乙個物件,並且是值傳遞方式 2 函式的返回值是乙個物件,並且是值傳遞方式 3 用乙個物件初始化另外乙個物件 由此,當函式的引數或者返回值為乙個物件時,使用的時候要小心,因為值傳遞的時候執行的是位拷貝,並不會呼叫物件的建構函式,也就是說生成的臨時物...
普通建構函式 複製建構函式以及等號過載
include class aaa 新建的乙個普通類 class test test aaa a test test t 複製建構函式 test operator aaa a 等號過載 test operator test t 等號過載 int main int argc,char argv 輸出結...
拷貝建構函式 過載 操作符的區別 深拷貝
define crt secure no warnings include iostream using namespace std 如果要考慮深拷貝問題,必須寫拷貝建構函式和過載 操作符函式 深拷貝原則 1.判斷原記憶體空間是否為空,不為空則釋放掉 2.分配新的記憶體空間 3.拷貝 呼叫拷貝建構函...