相关疑难解决方法(0)

运算符重载的基本规则和习惯用法是什么?

注意:答案是按照特定的顺序给出的,但由于许多用户根据投票而不是给出的时间对答案进行排序,因此这里是答案索引,它们是最有意义的顺序:

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ operator-overloading operators c++-faq

2074
推荐指数
8
解决办法
88万
查看次数

赋值运算符在返回语句中的含义是什么,例如return t = ...?

我有疑问,在我的代码示例中返回赋值表达式意味着什么?我有一个枚举,我已经覆盖了++:运算符.因此,在我的简短示例中可以在ligth之间切换 - 但是代码中有一部分我不明白.代码编译并正常工作.

码:

enum Traficlight
{green, yellow, red };

Traficlight& operator++(Traficlight& t)
{
    switch (t)
    {
    case green: return t = Traficlight::yellow; //Here <--
    case yellow: return t = Traficlight::red; //Here <--
    case red: return t = Traficlight::green; //Here <--
    default:
        break;
    }
}

int main()
{


    Traficlight Trafic = Traficlight::green;
    Trafic++;

    if (Trafic == Traficlight::yellow)
    {
        cout << "Light is Yellow" << endl;
    }

    string in;

    cin >> in;

}
Run Code Online (Sandbox Code Playgroud)

"返回t = Traficlight :: yellow"是什么意思,为什么我只能返回"Traficlight :: yellow".

c++ enums return

7
推荐指数
2
解决办法
1196
查看次数

平等运算符优先级不起作用

在C++中,相等运算符的关联性是从左到右,如此此处所述,赋值操作的返回值是分配给给定变量的值.(如图所示这里,这里,这里,并在这里,(部分6.5.16,在最后一个环节101-104页).)

根据这些信息,这个:

double d = 5;

if (d == (d = 6))
    cout << "but d was 5...!!!" << endl;
else
    cout << "5!=6 :)" << endl;
Run Code Online (Sandbox Code Playgroud)

应该打印,"5!=6 :)"因为表达式,(d == (d = 6))相当于(5 == (6))(这是假的),而是"but d was 5..."打印.有谁能解释为什么?

c++ associativity

0
推荐指数
1
解决办法
87
查看次数