#include #includeusing
namespace
std;
class
a
~a()
private
:
string
name_;
};int
main()
上面這段**執行的時候會報錯,是什麼錯?應該怎麼修改?
答:是由於a沒有預設建構函式而報錯,在執行到map_[1]處,會呼叫a的預設建構函式來構造乙個a物件,然後將a("one_name")這個物件再複製給map_[1]這個物件
修改方法:
1. 給a新增乙個預設的建構函式
2. 將map_[1] = a("one_name"); 改成 map_.insert(pair(1, a("one_name")));
C 建構函式小記
每乙個類建立物件的時候,此時會呼叫建構函式對類內的成員進行初始化。下面的test 即為類test的乙個建構函式 class test 與類的名稱相同 類中沒有指定宣告建構函式,編譯器會自動生成 沒有返回值 可以過載 宣告兩個建構函式 include using namespace std class...
C 預設建構函式
c 預設建構函式 一直認為若程式設計師沒有自己定義無引數的建構函式,那麼編譯器會自動生成預設建構函式,來進行對成員函式的初始化,但這種認為是有誤的,不全面的.預設的建構函式分為有用的和無用的,所謂無用的預設建構函式就是乙個空函式 什麼操作也不做,而有用的預設建構函式是可以初始化成員的函式。對建構函式...
c 預設建構函式
c 什麼時候合成預設建構函式?c 合成的預設建構函式都做些什麼?以下三個條件同時滿足 源程式中沒有宣告任何建構函式 編譯器需要該類有預設建構函式 程式中需要呼叫預設建構函式 預設建構函式是以編譯單元為單位生成的 什麼時候編譯器需要預設建構函式 該類中有 有預設建構函式 的成員物件 該類繼承乙個有預設...