-
前引
无意识(寄
-
他人思路鸣谢
无
-
我的代码
#include <iostream>
using namespace std;
class Sample {
public:
int v;
Sample(){v=0;}
Sample(int tmp)
{
v=tmp;
cout<<"zhuanhuan"<<endl;
}
Sample(const Sample& a)
{
cout<<"copy"<<endl;
v=a.v+2;
}
// 在此处补充你的代码
};
void PrintAndDouble(Sample o)
{
cout << o.v;
cout << endl;
}
int main()
{
Sample a(5);
Sample b = a;
PrintAndDouble(b);
Sample c=20;//此处调用类型转换构造函数同时调用复制构造函数
PrintAndDouble(c);
Sample d;
d = a;
cout << d.v;
return 0;
}
-
解析
复制构造函数的const修饰报错 若仅有Sample b(a)等同类型初始化的拷贝函数调用 无需const 但若有 Sample c=20等先经过类型转换构造函数调用生成临时变量在进行拷贝构造函数的调用即不可以,必须有const修饰
此处附上几处链接理解 复制构造函数的const修饰问题以便未来真正理解
问答式解释 Ⅱ//此处为何调不了一致的mode