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

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

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

类似

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

【问题讨论】:

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

标签: c++


【解决方案1】:

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

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

【讨论】:

  • 不想重新实现整个事情,这就是你在 else 子句中所做的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 2013-02-14
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
相关资源
最近更新 更多