【问题标题】:c++ constructor and operator problemc++构造函数和运算符问题
【发布时间】: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? 的可能重复项

标签: c++ operators constructor


【解决方案1】:

amon's comment 是正确的。

为了简单说明,在您提供的示例代码中:

Class n3();

定义一个不带参数的函数,并按值返回Class 的实例。

这是 C++ 语法中的一个怪癖。

要解决此错误,请在初始化不采用任何构造函数参数的变量时省略空括号对。

【讨论】:

  • 你也可以养成使用大括号调用>= C++11中的构造函数的习惯。 SomeType t{};
猜你喜欢
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 2014-01-22
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多