1. 靜態成員變量
- 屬於類,不屬於對象,全類共享唯一實例。
- 類內聲明(
static int id;),類外定義(int A::id = 0;)。
- 訪問:
A::id 或對象 a.id(不推薦)。
2. 靜態成員函數
- 屬於類,無
this 指針,只能訪問靜態成員。
- 調用:
A::func()。
- 若需操作非靜態成員,可傳入對象引用:
static void set(A& a, int v){ a.id=v; }。
3. 友元 (同上一筆記)
- 友元函數、友元類、友元成員函數三種形式。
- 聲明在類內,定義在類外,打破封裝訪問私有成員。
4. 類嵌套 (組合)
- 類作為另一類的成員對象。
- 構造函數初始化列表調用成員對象構造函數:
C(int a,int b): m_a(a), m_b(b) {}。
- 初始化順序按成員聲明順序,與初始化列表書寫順序無關。
- 若未在列表中顯式初始化,自動調用默認構造函數。
代碼示例
class A { public: A(int v):val(v){} int val; };
class B { public: B(int v):val(v){} int val; };
class C {
A a; B b; // 聲明順序:a 先於 b
public:
C(int x, int y): b(y), a(x) {} // 列表順序無關,實際先構造 a 再 b
};