【问题标题】:how to override || in c++ [closed]如何覆盖 ||在 C++ [关闭]
【发布时间】:2018-06-05 23:31:49
【问题描述】:

我如何覆盖|| 来计算某些东西?我试过这些,但它不起作用

主要:

obj || 1;

在课堂上:

ostream& MyClass::operator||(ostream & i)
{
    if (i > 0) 
    { 
        cout << i;
    }
    else 
    {

    } 
    return *this;
}

【问题讨论】:

  • 注意operator ||&amp;&amp; 的过载,因为不再有短路评估。
  • 当问题陈述很简单时,很难提供解决方案,"it doesn't work"。请edit您的问题更完整地描述您预期会发生什么以及这与实际结果有何不同。请参阅 How to Ask 以获取有关什么是好的解释的提示。
  • 但我刚刚得到了答案。我在重载这个运算符时遇到了问题,因为 cout 中没有显示任何内容。当我尝试重载运算符时,我需要知道为什么不消失

标签: c++ operator-overloading overriding overloading


【解决方案1】:

您错误地声明了您班级的operator||

您的main 代码没有传入ostream 对象,而是传入一个整数,因此operator 需要接受一个整数作为输入,例如:

class MyClass
{
//...
public:
    MyClass& operator||(int i);
//...
};

MyClass& MyClass::operator||(int i)
{
    if (i > 0)
    {
        cout << i;
    }
    else
    {
        //...
    }
    return *this;
}

Live Demo

【讨论】:

  • 正确答案。我认为混淆是由于成员operator || 仍然是二元运算,只是将隐藏的*this 参数作为左侧操作数。强调一个显式参数是右手操作数可能会有所帮助。
猜你喜欢
  • 2014-05-23
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
相关资源
最近更新 更多