#include<iostream>
using namespace std;
class A
{
int a;
public:
void show(){cout<<a<<endl;}
explicit A(const A&b){a=b.a;}
A(int data = 12):a(data){}
};
int main()
{
A a=2;
a.show();
}
编译出错:: initializing temporary from result
将复制构造函数前面的explicit去掉后,成功编译运行。这个故事告诉我们不要在复制构造函数前加explicit限定符