保留基本功能的重载赋值运算符
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 部分指定基本功能并在 if 或 else if 部分指定您的条件如果条件为真,则根据该值执行您的操作返回一些特定值。
operator=(input)
if (input == specialValue)
setParam(this->true)
esle
setParam(input)
【讨论】:
他不不想重新实现整个事情,这就是你在else
子句中所做的事情。以上是关于保留基本功能的重载赋值运算符的主要内容,如果未能解决你的问题,请参考以下文章
重载运算与类型转换——基本概念,输入和输出运算符,算术和关系运算符,赋值运算符,下标运算符,递增和递减运算符,成员访问运算符