【问题标题】:Class constructor with default parameters具有默认参数的类构造函数
【发布时间】:2014-09-23 13:52:10
【问题描述】:

我是下一个简单的构造函数:

Vector(double x=0, double y=0) : x(x), y(y) {}

void operator+=(const Vector& other) {
    this->x += other.x;
    this->y += other.y;
}

但是当我这样称呼它时

Vector b();
Vector a(1,1);

并尝试做 a += b; 编译器给了我很多错误,说不存在运算符。但是,当我这样做时: 向量 b(0,0); 或者 向量 b(0); 一切正常(((

【问题讨论】:

  • 您为什么认为这样的构造函数可以使用+=?如果你想要操作符,你必须重载它。这与构造函数无关。但作为旁注,你应该明确这个构造函数,否则简单的数字将隐式转换为向量作为 x 坐标。
  • 我有一个接线员。现在我添加它...
  • 顺便说一句,this-> 不是必需的
  • @RobertMutke 我喜欢在这种情况下使用this 来明确使用了两个对象中的哪一个。
  • @NeilKirk 有点口味问题,但还是应该避免stackoverflow.com/questions/2337540/…

标签: c++ class constructor


【解决方案1】:

Vector b(); 不创建对象。它声明了一个函数。

Vector b;
Vector a(1,1);

应该可以。

【讨论】:

    猜你喜欢
    • 2017-09-27
    • 2018-04-08
    • 2015-01-28
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    相关资源
    最近更新 更多