在c++中构造函数分为初始化阶段和普通的计算阶段
#include<iostream>
using namespace std;
class A
{
const int m;
int n;
public:
A():m(1){
cout<<m<<endl;
}
};
int main(int argc, char* argv[])
{
A a;
return 0;
}
运行结果为:
1
#include<iostream>
using namespace std;
class A
{
const int m;
int n;
public:
A(){
m=1;
cout<<m<<endl;
}
};
int main(int argc, char* argv[])
{
A a;
return 0;
}
编译不能通过;
对比以上结果可知,构造函数在初始化阶段通过初始化列表对成员变量初始化。之后再进行赋值。
demo:
#include<iostream>
using namespace std;
class A
{
int n;
public:
A():n(1){
cout<<"采用初始化列表n被初始化为:"<<1<<endl;
n=10;
cout<<"为n赋值"<<n<<endl;
}
};
int main(int argc, char* argv[])
{
A a;
return 0;
}
运行结果:
![](https://img-my.csdn.net/uploads/201302/28/1362063668_1787.jpg)