如何在创建新对象时使用=运算符
how to use the = operator as you create a new object?
我有一个对象,并且重载了=运算符以接受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);
但我希望这些能像整数一样工作。
创建一个具有int
类型参数的构造函数。
jakeint(int x)
{
_setFromInt(x);
}
有了这个,你可以使用:
jakeint ji = 8;
以及
jakeint ji(8);
只需将其添加到构造函数即可。您可以使用=
指定初始化,也无所谓。它以任何一种方式调用构造函数。
您可以为jakeint ji = 8;
和jakeint ji(8);
创建一个带参数的构造函数,例如:
jakeint(int x) {
_setFromInt(x);
}
如果你自己定义一个构造函数,如果你仍然想使用jakeint ji;
,你也需要定义一个默认的构造函数,比如:
jakeint() {
_setFromInt(0);
}
您需要一个接受int的构造函数,以及一个复制构造函数。在这种情况下,隐式复制构造函数是可以的。(对复制ctor的实际调用通常被忽略。(
jakeint ji = 8;
只是jakeint ji(8);
的简写别名,它们是相同的,因此您确实需要添加一个以int
为输入的构造函数,正如其他人向您展示的那样。
相关文章:
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 运算符重载 += 添加新对象
- 如何用 2 个对象过度引导运算符
- C++内联运算符重载中,请参阅当前对象
- 使用运算符"="在C++中用值初始化对象
- C++运算符重载做双 * 对象
- 如何在自定义对象的<<运算符中添加自定义前缀
- 尝试重载输出运算符时,我无法遍历对象向量
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 在之后仍需要使用源对象时调用父移动分配运算符
- 错误:三元运算符无法在对象中正常工作"cout"
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 无法使用迭代器查找类对象。(二进制 '==': 'userInfo' 不定义此运算符)
- 重载加法运算符(使用函数向对象添加字符串)
- 临时对象上的运算符重载
- 如何使用运算符+重载函数正确返回对象?
- 如何分配适合容纳 T 类型对象的缓冲区(可能过度对齐、可能有运算符 new 等)
- 重载运算符 [] 用于从对象数组中给出特定索引