每乙個類建立物件的時候,此時會呼叫建構函式對類內的成員進行初始化。
下面的test()即為類test的乙個建構函式
class
test
;
與類的名稱相同
類中沒有指定宣告建構函式,編譯器會自動生成
沒有返回值
可以過載
宣告兩個建構函式
#include
using
namespace std;
class
test
test
(int i)
:data
(i)private
:int data;};
intmain()
不能被派生類繼承
建立派生類物件前,會先呼叫base建構函式,再呼叫derive建構函式
#include
using
namespace std;
class
base
base
(int i)
:data
(i)private
:int data;};
class
derive
:public base};
intmain()
static關鍵字不能用於建構函式
編譯以下**報錯:constructor cannot be static member function
#include
using
namespace std;
class
test
;int
main()
virtual關鍵字不鞥你用於建構函式
編譯以下**報錯:constructors cannot be declared 『virtual』
#include
using
namespace std;
class
test
;int
main()
explicit關鍵字可以修飾建構函式
避免類的物件被隱式轉換,在test(int i)前面增加explicit,a=1編譯時就會報錯,不能隱式轉換1為test物件。若需要轉換只能顯示的強制轉換。
#include
using
namespace std;
class
test
private
:int data;};
intmain()
#include
using
namespace std;
class
test
private
:int data;};
intmain()
C 預設建構函式小記
include include using namespace std class a a private string name int main 上面這段 執行的時候會報錯,是什麼錯?應該怎麼修改?答 是由於a沒有預設建構函式而報錯,在執行到map 1 處,會呼叫a的預設建構函式來構造乙個a物件...
建構函式 原型物件小記
object是建構函式,而object.prototype是建構函式的原型物件。建構函式自身的屬性和方法無法被共享,而原型物件的屬性和方法可以被所有例項物件所共享。首先,建構函式是生成物件的模板,乙個建構函式可以生成多個物件,每個物件都有相同的結構。建構函式的缺點就是每當例項化兩個物件時,需要呼叫兩...
C 學習小記之建構函式和析構函式
物件的初始化和清理是非常重要的安全問題 建構函式 建立物件時為物件的成員屬性賦值,建構函式由編譯器自動呼叫,無需手動呼叫 析構函式 物件銷毀前自動呼叫,執行一些清理工作 當我們不提供構造和析構時,編譯器會提供,而編譯器提供的時空實現的 建構函式語法 類名 無返回值也不寫void 函式名稱與類名相同 ...