在类中定义引用变量, 必须要在初始化列表中初始化该成员变量, 例如:
- #include <iostream>
- using namespace std;
- class A
- {
- private:
- int &a;
- public:
- int n;
- A(int k):a(n){
- n=k;
- //a = n; //error, 必须在初始化列表中初始化,看a(n)
- cout<<a<<endl;
- }
- const int get()const{
- //get1();
- return n+1;
- }
- int get1(){
- cout<<"YY"<<endl;
- return n;
- }
- };
- int main()
- {
- A a(10);
- cout << a.get()<<endl;
- return 0;
- }
copy 自 c++primer:
记住,可以初始化 const 对象或引用类型的对象,但不能对它们赋值。在开始执行构造函数的函数体之前,要完成初始化。初始化 const 或引用类型数据成员的唯一机会是构造函数初始化列表中。编写该构造函数的正确方式为
// ok: explicitly initialize reference and const members
ConstRef::ConstRef(int ii): i(ii), ci(i), ri(ii) { }
必须对任何 const 或引用类型成员以及没有默认构造函数的类类型的任何成员使用初始化式。