1. 程式人生 > >C++-類物件成員&&物件陣列

C++-類物件成員&&物件陣列

類物件成員

#include <iostream>
using namespace std;

class stuid {
    int id;
    public:
        stuid(int i = 0) {
            //id = i;
            cout << "in stuid : " << i << endl;
        }
        stuid() {
            cout << "in here" << endl;
        } 
};

class
stu { stuid id; public: stu(int i) { cout << "in stu : " << i << endl; } }; int main () { stu s(1); return 0; }

1、只有當物件成員所在的類有無參建構函式時,編譯器才會以隱式初始化列表的方式對物件成員進行初始化。當一個類沒有任何建構函式時,C++會產生一個預設無參建構函式;一旦定義了任何建構函式,C++就不會產生無參構造函數了,必須顯示定義無參建構函式,或提供預設引數的建構函式。

若stuid中沒有無參建構函式,同時去掉預設引數,即stuid( int i),這樣編譯器不會生成預設無參建構函式,因此無法完成初始化,會造成編譯錯誤。
另外同時有預設建構函式和無參建構函式時,編譯器會不知道呼叫哪個,造成錯誤。

2、當類具有物件成員時,應該採用初始化列表的方式對它進行初始化。

3、物件成員的構造次序與它們在類中的宣告次序相同,與它們在建構函式初始化列表中的次序無關。

物件陣列

1、沒有定義任何建構函式的類可以定義物件陣列,因為編譯器會自動生成一個預設無參函式;如果一個類只有需要引數的建構函式,就不能定義物件陣列。

2、如果一個類同時具有無參建構函式和全部引數都有預設值的建構函式,也可以定義物件陣列。無參建構函式在定義物件陣列時具有優先權,但是在定義無參物件時,會產生二義性。