如何重载条件运算符?

时间:2012-02-24 09:46:16

标签: c++ operator-overloading conditional-operator

  

可能重复:
  Operator overloading

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

int a,b,c;

  a=10;
  b=11;
  c = (a>b) ? a : b;

有可能吗?

3 个答案:

答案 0 :(得分:5)

您不能重载条件运算符。

答案 1 :(得分:5)

多个运营商无法超载。这些运算符将名称而不是对象作为右操作数:

  • 直接会员访问(。)

  • 指向类成员的引用指针(。*)

  • 范围解析(::)

  • (sizeof)的大小

条件运算符(?:)也不能重载。

此外,新的类型转换运算符:static_cast<>,dynamic_cast<>,reinterpret_cast<>和const_cast<>,以及#和##预处理器标记不能重载。

http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=23

答案 2 :(得分:1)

不,你不能重载条件运算符,因为它只是一个简单的if..else块的简写。

但是,您可以重载条件中使用的运算符,但不能像int这样的原始类型重载,就像上面的示例中那样。