當基類存在私有成員時,應該如何編寫繼承類的複製建構函式呢?
方法是在複製建構函式的初始化成員列表中呼叫基類的複製建構函式。
class base
};class derived:public base
derived(const derived &obj) :base(obj), j(obj.j){}
private:
int j;
};
當基類不存在預設建構函式時,繼承類建構函式必須顯式呼叫基類建構函式,否則會呼叫基類的預設建構函式,最終會出現「找不到構造方法」的編譯錯誤。
如下是錯誤的:
class base
};class derived :public base //錯誤
derived(const derived &obj) :base(obj), j(obj.j){}
private:
int j;
};
c 類 建構函式 複製建構函式
複製建構函式是一種特殊的建構函式,它的作用是用乙個已經存在的物件去初始化另乙個物件。一般情況下不需要自行定義複製建構函式,系統預設提供乙個逐個複製成員值的複製建構函式。何時要使用呢?1.將新物件初始化為乙個同類物件 2.按值將物件傳遞給函式 3.函式按值返回物件 4.編譯器生成臨時物件 簡單的樣例如...
類與物件 組合類的建構函式和複製建構函式
初始化列表是用於構造函式引數的初始化,與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。如 class myclock 建構函式的實現和初始化設定 myclock myclock int hh,int mm,int ...
類和物件 複製建構函式
形如x x x 或x x const x 二選一,後者能以常量物件作為引數 class complex complex c1 呼叫預設無參建構函式 complex c2 c1 呼叫預設的複製建構函式,將 c2 初始化成和c1一樣class complex complex const complex ...