拷贝初始化和直接初始化
C++Primer中写到如果采用等号初始化则采用的是拷贝初始化,否则市默认初始化。今天gcc编译器下实际验证如下:
#include<iostream>
using namespace std;
class D
{
public:
D(int _a)
{
a=_a;
cout<<"默认构造函数\n";
};
D(const D &dd)
{
a=dd.a;
cout<<"拷贝构造函数\n";
};
private:
int a;
};
int main(){
D d(0);
D d1=2;//调用的默认构造函数
D d1=d;//调用的是拷贝构造函数
return 0;
}
有点奇怪从结果上来说class(value)和class=value是一样的,而只有用另一个对象初始化才会调用拷贝构造函数