前言
最近复习c++中,类相关的知识。在做默认构造和拷贝构造相关实验的过程中,遇到了一个很疑惑的问题。后来才发现,是由于编写的时候语法不规范导致的(不应该被修改的实参,引用形式传入时加const限定)。所以在这里记录一下,如果有其他小伙伴遇到了,也能作一个提醒。
问题描述以及解决方案
在visual studio中,定义了如下的拷贝构造函数以及重载运算符=
class Complex{ //复数类的定义
public:
Complex(Complex& c) //拷贝构造
{
cout << "拷贝构造" << endl;
this->real = c.real;
this->image = c.image;
}
Complex& operator=(Complex& c) //重载=
{
cout << "重载=的调用" << endl;
this->real = c.real;
this->image = c.image;
return *this;
}
private:
double real;
double image;
};
上面的代码,咋一看好像没什么问题,而且在visual c++ 6.0中,这样定义出来的拷贝构造函数和重载出来的=操作符是可以正常使用的。但是如果放在visual studio中,就会出现很诡异的错误。
首先是拷贝构造的问题:

最低0.47元/天 解锁文章
575

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



