C++ 速查手冊
9.1 - 建構函數
建構函數 (constructor) 是一種特別的成員函數,與類別同名並且沒有回傳值 (return value) ,因為這是在類別實際建立物件時執行的函數。如果自己沒有定義建構函數,編譯器 (compiler) 會補上預設的建構函數。
預設的建構函數是沒有參數 (parameter) 的函數版本,我們同樣舉個沒有參數的建構函數例子如下
#include <iostream>
class Demo {
public:
int a;
int b;
Demo() {
std::cout << "constructor.." << std::endl;
a = 22;
b = 33;
}
int do_something() {
return a + b;
}
};
int main() {
Demo d;
std::cout << d.do_something() << std::endl;
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u0901_1.cpp
功能:示範 C++ 的類別
作者:張凱慶*/
此例的建構函數被呼叫時,會先印出英文訊息,然後設定兩個資料成員
編譯執行,結果如下
$ g++ u0901_1.cpp |
$ ./a.out |
constructor.. |
55 |
$ |
下例將 Demo 改寫成 Demo2 ,增加另一個有參數的建構函數
#include <iostream>
class Demo2 {
public:
int a;
int b;
Demo2() {
a = 22;
b = 33;
}
Demo2(int pa, int pb) {
a = pa;
b = pb;
}
int do_something() {
return a + b;
}
};
int main() {
Demo2 d(33, 44);
std::cout << d.do_something() << std::endl;
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u0901_2.cpp
功能:示範 C++ 的類別
作者:張凱慶*/
新版本的建構函數有兩個參數,分別用來設定兩個資料成員
Demo2(int pa, int pb) {
a = pa;
b = pb;
}
這樣宣告 Demo 型態的變數 d 時,就要用小括弧加上參數列 (parameter list)
Demo2 d(33, 44);
編譯執行,結果如下
$ g++ u0901_2.cpp |
$ ./a.out |
77 |
$ |
相關教學影片