C++ 重载加号运算符以将元素添加到对象

标签 c++ operator-overloading

对象的构造函数

Set<T>::Set() {
    buckets = new forward_list<T>[9];
    numBuck = 9;
    numElem = 0;
    maxLoad = 9;
}

加号运算符的重载

Set<T>::operator+(T elem){
    Set<T> res;
    return res;
}

我不太知道从哪里开始。此重载运算符将其参数 elem 添加到 *this 的拷贝并返回结果。 例如:

Set<char>setA;
Set<char>setB;

setA.Add('a')
setA.Add('b')
setA.Add('c')
// setA contains {'a','b','c'}
setB = setA + 'd'
// setB should now contain {'a','b','c','d'}

有什么指导吗?

编辑:澄清运算符重载功能

最佳答案

您可以在集合中创建一个复制函数,并在重载中使用Add函数。演示代码:

Set<T>::operator+(T elem)
{
    Set<T> result;
    result.Copy(*this);
    result.Add(elem);
    return result;
}

注意:或者您可以按照 @jxh 的回答并使用默认的复制构造函数。为了明确起见,我会创建一个 Copy 函数。 :)

关于C++ 重载加号运算符以将元素添加到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69923184/

相关文章:

c++ - 自动选择目标文件进行编译

c# - 对于具有多个 == 运算符覆盖的类,空检查是不明确的

c++ - 将 vector map 写入 Omnetpp 中的文件

c++ - 重载运算符时可以使用标志吗?

c++ - operator<< 重载调用打印函数麻烦

c++ - 获取函数地址时的奇怪行为

c++ - 在本地机器上对 C++ 程序进行压力测试

c++ - VBA 无法找到我的 DLL,尽管对位置进行了硬编码。

C++ 对二进制表达式 ('IOperand *' 和 'IOperand *' 的无效操作数)

c++ - 什么是 undefined reference /未解析的外部符号错误以及如何修复它?