c++构造函数和运算符问题
Posted
技术标签:
【中文标题】c++构造函数和运算符问题【英文标题】:c++ constructor and operator problem 【发布时间】:2015-07-11 11:17:58 【问题描述】:我对构造函数和赋值运算符有疑问。这是我的代码:
class Class
private:
double number1;
double number2;
public:
Class(double, double);
Class& operator=(const Class& n);
Class::Class(double n1 = 0.0, double n2 = 0.0)
this->number1 = n1;
this->number2 = n2;
Class& operator=(const Class& n)
this->number1 = n.number1;
this->number2 = n.number2;
return *this;
int main()
Class n1(2., 3.), n2(7., -1.), n3();
n2 = n1; // no problem
n3 = n1; // problem
return 0;
能否请教一下,为什么main中的第二个作业有问题?
非常感谢
编辑:出现以下错误:
[Error] assignment of function 'Complex cislo2()'
[Error] cannot convert 'Complex' to 'Complex()' in assignment
【问题讨论】:
您遇到了什么问题?编译错误?运行时错误?您可以在问题中包含错误吗? 我在原帖中添加了错误 What does A a() mean? 的可能重复项 【参考方案1】:amon's comment 是正确的。
为了简单说明,在您提供的示例代码中:
Class n3();
定义一个不带参数的函数,并按值返回Class
的实例。
这是 C++ 语法中的一个怪癖。
要解决此错误,请在初始化不采用任何构造函数参数的变量时省略空括号对。
【讨论】:
你也可以养成使用大括号调用>= C++11中的构造函数的习惯。 SomeType t;以上是关于c++构造函数和运算符问题的主要内容,如果未能解决你的问题,请参考以下文章
C++类和对象(构造函数析构函数拷贝构造函数赋值运算符重载Const成员)详细解读