引用是變量別名,聲明時必須初始化,且不可重新綁定。類中聲明引用成員:
class B {
A& ref_; // 必須在構造函數初始化列表中綁定
public:
B(A& a) : ref_(a) {} // 正確:初始化列表
// B(A& a) { ref_ = a; } // 錯誤:函數體內是賦值而非初始化
};
| 類型 | 聲明 | 可空 | 可重綁定 | 初始化位置 |
|---|---|---|---|---|
| 指針 | A* p; | 是 | 是 | 列表或函數體 |
| 引用 | A& r; | 否 | 否 | 僅初始化列表 |
| 值 | A obj; | 否 | N/A | 列表或函數體 |
class A { public: void print() { cout << "A\n"; } };
class B {
A& r_; A* p_;
public:
B(A& a) : r_(a), p_(&a) {}
void test() { r_.print(); p_->print(); }
};
int main() { A a; B b(a); b.test(); }