【问题标题】:typedef and operator overloading in C++C++ 中的 typedef 和运算符重载
【发布时间】:2010-05-16 17:17:44
【问题描述】:

假设我 typedef 一个整数或整数数组或任何已知类型:

typedef int int2

然后我为 int2 对重载运算符 *,现在如果我将变量 a 和 b 初始化为 int。那么我在 a 和 b 之间的 * 会是重载的 * 吗?

我如何实现 int 的重载,同时又像它们一样使用 * 表示 int。我应该创建一个新类型吗?

【问题讨论】:

  • 也许使用枚举而不是int?您可以为枚举定义自定义运算符。

标签: c++ operator-overloading


【解决方案1】:

假设您在谈论 C++:
运算符重载必须至少采用一个用户定义类型的参数。 typedef 没有改变任何东西,因为它没有引入新类型,只提供同义词。

【讨论】:

    【解决方案2】:

    你需要的是一个强类型定义

    Boost 提供的版本应该适合您,或者至少可以帮助您解决您的需求:

    http://www.boost.org/doc/libs/1_42_0/boost/strong_typedef.hpp

    【讨论】:

      【解决方案3】:

      C 不允许运算符重载。

      【讨论】:

      • 虽然最初并不是 100% 清楚这是一个 C++ 问题,但现在已更新该问题以澄清。因此,虽然最初这可能应该只是一个评论,但现在它绝对不是一个相关的答案。请删除它。
      猜你喜欢
      • 2016-02-19
      • 1970-01-01
      • 2012-08-08
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多