如何在创建新对象时使用=运算符?

时间:2014-04-30 03:43:15

标签: c++ class int operator-overloading operators

我有一个对象,我重载了=运算符以接受一个int。

class jakeint
{
private:
    vector<short> theInt;
    void _setFromInt(int x);

    //operators
public:
    jakeint& jakeint::operator=(int x)
    {
        _setFromInt(x);
        return *this;
    }
};

这完全没问题。问题是,如果我想使用=运算符,我必须这样做:

jakeint ji;
ji = 8;

我确实希望这是可行的,但我希望能够做到这一点:

jakeint ji = 8;

我将如何做到这一点?

我意识到我可以将它添加到构造函数中并执行

jakeint ji(8);

但我希望这些工作就像整数一样。

5 个答案:

答案 0 :(得分:2)

创建一个参数类型为int的构造函数。

jakeint(int x)
{
  _setFromInt(x);
}

有了这个,你可以使用:

jakeint ji = 8;

以及

jakeint ji(8);

答案 1 :(得分:1)

只需将其添加到构造函数中即可。您可以使用=指定初始化,但这并不重要。它以任何一种方式调用构造函数。

答案 2 :(得分:0)

您可以使用jakeint ji = 8;jakeint ji(8);的参数创建一个构造函数,例如:

jakeint(int x) {
    _setFromInt(x);
}

如果您自己定义构造函数,则还需要定义默认构造函数,如果您仍想使用jakeint ji;,例如:

jakeint() {
    _setFromInt(0);
}

答案 3 :(得分:0)

您需要一个带有int的构造函数,以及一个复制构造函数。在这种情况下,隐式复制构造函数很好。 (通常会删除对复制程序的实际调用。)

答案 4 :(得分:0)

jakeint ji = 8;只是jakeint ji(8);的简写别名,它们是相同的,因此您需要添加一个以int作为输入的构造函数,就像其他人向您展示的那样。

相关问题