相关疑难解决方法(0)

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

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

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

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

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

在C++中,A + = B优于A = A + B,同样地,++ A是A ++?

在C++中,A + = B优于A = A + B,同样地,++ A是A ++?

我知道"++ A"预增量至少与"A ++"后增量一样快.这里讨论了许多地方,包括这里这里.同样,预期A + = B至少与A = A + B一样快,如此处所示.

我在看这个++:

//From https://herbsutter.com/2013/05/13/gotw-2-solution-temporary-objects/
T T::operator++(int)() {
auto old = *this; // remember our original value
++*this;          // always implement postincr in terms of preincr
return old;       // return our original value
}
Run Code Online (Sandbox Code Playgroud)

我的理由是,在最坏的情况下(可能来自复杂的对象类型)A = A + B必须检索并存储A并在将其保存回原始A位置之前添加B,而A + = B将采用B并添加直接到A.我的推理是否正确?

期望基本类型在编译时重新排列为相同,并且这实际上仅适用于需要运算符重载的复杂对象.

这是否一般扩展到大多数命令式语言?

c++

6
推荐指数
2
解决办法
3982
查看次数

如何重载条件运算符?

可能重复:
运算符重载

我很想知道如何在cpp中加载条件运算符?

int a,b,c;

  a=10;
  b=11;
  c = (a>b) ? a : b;
Run Code Online (Sandbox Code Playgroud)

可能吗?

c++ operator-overloading conditional-operator

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

声明不能在条件运算符表达式内发生?

我想知道为什么我不能在下面的表达式中声明一个变量.

string finalgrade = ( ( int grade = 100 ) < 60 ) ? "fail" : "pass"; 
Run Code Online (Sandbox Code Playgroud)

虽然我们可以在for语句中声明一个变量.

c++ language-lawyer

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