類建構函式初始化列表
阿新 • • 發佈:2018-11-09
表現形式有三種
- 當前類進行初始化,尤其是當成員變數是一個const或者一個引用型別
class Demo
{
private:
int b;
public:
Demo(int a):b(a){};
}
- 需要在初始化列表中呼叫外部類成員的初始化函式
#include <iostream> using namespace std; class C1 { private: int a; int b; int c; public: C1(int a,int b,int c) { cout << "Class 1 construct function" << endl; }; }; class C2 { private: C1 c1Obj; public: C2():c1Obj(1,2,3)//這裡用的是類1物件的 { cout << "Class 2 construct function" << endl; }; }; int main() { C2 c2Obj; return 1; }
最後列印的結果是
Class 1 construct function
Class 2 construct function
- 派生類要在初始化列表中呼叫父類的建構函式
#include <iostream> using namespace std; class Base { public: Base(int a) : val(a) {} private: int val; }; class Derived : public Base { public: //多個引數用逗號隔開 Derived(int v) : p(v), Base(v) {} void print_val() { cout << "hello:" << p << endl;} private: int p; }; int main(int argc ,char **argv) { int pp = 45; Derived b(pp); b.print_val(); }
列印結果如下
hello:45