c++ - 如何重载加法运算符以执行交换计算?

标签 c++

<分区>

Possible Duplicate:
Operator Overloading in C++ as int + obj

我有一个类 A,它有一个重载的 operator+。我的问题是我希望能够通过以下两种方式使用求和。

A a;

a + 5;

5 + a;

如何重载 + 才能做到这一点?我知道我们可以重载 ++ 来执行后增量和预增量(++xx++),那么我该如何模拟还有以上能力吗?

最佳答案

您将运算符(operator)定义为非成员:

class A
{
   int operator + (int x) const
   { 
       return 42;
   }
};

inline int operator + (int x, const A& a)
{
   return a+x;  //calls a.operator +(x)
}

inline 用于防止在标题中定义运算符时多次定义符号。

关于c++ - 如何重载加法运算符以执行交换计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13197240/

相关文章:

c++ - 如何从不在主类中的 ActiveX 控件 (.ocx) 导出函数?

C++ map 元素插入

c++ - 将 std::type_identity 对象转换为类型

c++ - scanf 没有按预期接受字符

c++ - CUDA 4.0 SDK 丢失文件?

c++ - 使用命名空间标准和库

c++ - 为什么局部函数定义在 C++ 中是非法的?

c++ - 为什么它打破了初始化列表的顺序规则时会起作用

c++ - 完全限制对文件夹的所有类型的访问

c++ - 空间查询点的第 k 个最近邻点