定義拷貝建構函式必須同時定義建構函式

2021-06-27 06:09:16 字數 423 閱讀 9532

今天測試static_cast<>時發現乙個類如果只有拷貝建構函式是不能通過編譯的,下面給個例子

class a{

public:

a(const a& ref){

cout<

error c2512: 「a」: 沒有合適的預設建構函式可用;

解決方法:給a新增合適的建構函式。

下面給出新增了建構函式的**,並測試了static_cast<>在把子類轉成父類時的執**況。

class a{

public:

a(){

cout<

cout<

結果:在呼叫static_cast<>時,a類拷貝構造函式呼叫,並且從返回的位址上也可看出static_cast<>返回的不是c類中的a部分

自定義拷貝建構函式 預設的拷貝建構函式

自定義拷貝建構函式 類名 類名 const 類名 物件名 拷貝建構函式的函式體 利用下述語句呼叫拷貝建構函式 rectangle p2 p1 include using namespace std class rectangle public rectangle int len,int wid le...

類內 外定義 建構函式 析構函式

內聯函式 1 類內定義時,定義的函式會預設為內聯函式 inline 優先編譯為內聯函式 2 類外定義 分為同檔案類外定義和分檔案類外定義。要寫 這個符號 同檔案類外定義 寫 標頭檔案 include 分檔案類外定義 3 ex 要求 定義乙個teacher類,要求分別採用同檔案類外定義和分檔案類外定義...

純虛析構函式必須給出定義

effective c 條歀07 為多型基類宣告virtual析構函式 declare destructors virtual in polymorphic base classes 純虛函式是一種特殊的虛函式,在許多情況下,在基類中不能對虛函式給出有意義的實現,而把它宣告為純虛函式,它的實現留給該...