我有一个对象,我重载了=运算符以接受一个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);
但我希望这些工作就像整数一样。
答案 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
作为输入的构造函数,就像其他人向您展示的那样。