#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限定符
本文通过一个简单的C++示例介绍了在复制构造函数前误用explicit关键字的问题,并解释了为何这种做法会导致编译错误。文章最后强调了正确使用复制构造函数的重要性。

3040

被折叠的 条评论
为什么被折叠?



