保留基本功能的重载赋值运算符

Posted

技术标签:

【中文标题】保留基本功能的重载赋值运算符【英文标题】:overload assignment operator with leaving basic functionality 【发布时间】:2015-07-22 06:25:32 【问题描述】:

是否可以在不完全重新实现的情况下重载= 运算符?

我想为它指定特殊行为 - 如果输入对象有一些特殊值 -> 运算符应该做一些额外的工作。如果不是 - 它应该作为基本的赋值运算符。

类似

operator=(input)
    if (input == specialValue)
        setParam(this->true)
    base()

【问题讨论】:

一旦你重载它,基本的赋值运算符就没了。 好的。那么下一个问题是——是否可以只在基类中重载,而不需要在继承类中处处实现? 在基类中给出默认实现,在派生类中给出重载实现。 不太清楚,你的意思。在类型上重载 depebds,当然成员函数的所有重载都由派生类型继承。 派生类中需要有赋值运算符,如果没有,则提供默认的赋值运算符,然后调用基类的赋值运算符。这些链接可以帮助你***.com/questions/3882186/…***.com/questions/9161512/… 【参考方案1】:

您可以使用 if else 语句来实现,在 else 部分指定基本功能并在 ifelse if 部分指定您的条件如果条件为真,则根据该值执行您的操作返回一些特定值。

operator=(input)
        if (input == specialValue)
            setParam(this->true)
        esle
           setParam(input)

【讨论】:

不想重新实现整个事情,这就是你在 else 子句中所做的事情。

以上是关于保留基本功能的重载赋值运算符的主要内容,如果未能解决你的问题,请参考以下文章

重载运算与类型转换——基本概念,输入和输出运算符,算术和关系运算符,赋值运算符,下标运算符,递增和递减运算符,成员访问运算符

C++中赋值运算操作符和=重载有啥区别?

c++中为啥赋值运算符重载返回类型是引用

带下标运算符的重载赋值运算符

C++重载赋值运算符

C++重载赋值运算符