C++深度解析 物件的構造(中)物件定義和宣告,建構函式的過載(17)
阿新 • • 發佈:2018-12-23
C++深度解析 物件的構造(中)物件定義和宣告,建構函式的過載(17)
物件的構造由建構函式完成
函式名與類名相同,並且不能有任何返回值。
帶有引數的建構函式
意義:可以使得每個物件有不同的初始化狀態。
一個類中可以存在多個過載的建構函式。
建構函式的過載遵循C++過載的規則。
物件定義和物件宣告不同
物件定義:申請物件的空間並呼叫建構函式
物件宣告:告訴編譯器存在這樣一個物件
Test t; //定義物件並呼叫建構函式 int main() { //告訴編譯器存在名為t的Test物件 extern Test t; return 0; }
分析:通過連結時找到物件定義的地方。編譯過程:預處理,編譯器出廠(對原始碼進行語法檢查,生成目標檔案),連結器出廠。
定義物件時,建構函式的自動呼叫。建構函式可以過載
例項程式:(帶引數的建構函式)
#include <stdio.h> class Test { public: Test() { printf("Test() \n"); } Test(int v) { printf("Test(int v), v = %d\n", v); } }; int main() { Test t; //呼叫 Test() Test t1(1); //呼叫 Test(int v) Test t2 = 2; //呼叫 Test(int v),使用2初始化t2 //int i;//初始化,i的初始值是隨機的 //i = 1;//賦值,不是初始化 //初始化和賦值不同,初始化是會呼叫建構函式,賦值則不會 //t = t2;//賦值操作 //初始化和賦值是不同的 int i(100); printf("i = %d\n", i); return 0; }
結果如下:
分析:Test t2 2;用2初始化t2。