c++ - C++ (Visual Studio 6) 中 operator< 和 operator[] 的默认返回值是什么?

标签 c++ visual-studio-2005 operators operator-overloading visual-studio-6

我继承了一个需要为 VS2005 翻译的大型 Visual Studio 6 C++ 项目。一些类定义了 operator< 和 operator[],但没有在声明中指定返回类型。 VS6 允许这样做,但 VS2005 不允许。

我知道 C 标准指定普通函数的默认返回类型是 int,我假设 VS6 可能遵循这一点,但这是否也适用于 C++ 运算符?或者 VS6 可以自己找出返回类型吗?

例如,代码定义了一个自定义字符串类,如下所示:

class String {
  char arr[16];
  public:
    operator<(const String& other) { return something1 < something2; }
    operator[](int index) { return arr[index]; }
};

VS6 会简单地将两者的返回类型都设置为 int,还是它会足够聪明地弄清楚 operator[] 应该返回一个 char 而 operator< 应该返回一个 bool(而不是将两个结果都转换为 int all时间)?

当然,我必须添加返回类型以使此代码符合 VS2005 C++,但我想确保指定与以前相同的类型,以免立即更改程序行为(我们目前正在寻求兼容性; 我们稍后会标准化)。

最佳答案

operator<返回 bool默认情况下。

operator[]返回 int默认情况下(我认为),但几乎肯定应该将其更改为返回集合包含的任何内容。对于上面给出的字符串示例,这将是 charwchar_t .

关于c++ - C++ (Visual Studio 6) 中 operator< 和 operator[] 的默认返回值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274356/

相关文章:

c# - 如何从反射执行显式操作转换?

c++ - 从 'size_t' 转换为 'const double' ,可能丢失数据

c++ - C++ 64 位中的 va_list

c# - 运算符在哪里定义(在 C# 中)?

visual-studio - 为什么 Visual Studio 想要在打开文件时 check out 文件?

c# - 在 VS2010 : keyboard shortcut schema "Default" vs "Visual C# 2005"

java - 简单的 Java 正则表达式不起作用

c++ - 定义全局命名空间

c++ define指令失败,代码看起来不错

c++ - spirit real_parser ".e"