#include<iostream>
using namespace std;
class X
{
public:
X(int i);
private:
int n;
const int n1;
int& n2;
};
X::X(int i)
{
n = i;//正确,因为n是变量可以初始化后进行赋值
n1 = i;//错误,因为n1是const类型,必须初始化时赋值
n2 = i;//错误,因为n2是引用类型,必须在初始化时赋值
}
当构造函数执行时,就已经初始化对象了,所以以上代码应改为
#include<iostream>
using namespace std;
class X
{
public:
X(int i);//构造函数的声明
private:
int n;
const int n1;
int& n2;
};
X::X(int i):n1(i),n2(i)//函数后面接冒号是对象数据进行列表初始化,初始化的数据后面要用()或{}进行初始化
{
n = i;
}