1

我继承了一个需要为 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) ?

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

4

1 回答 1

1

operator<默认返回一个bool

operator[]默认情况下返回int(我认为),但几乎可以肯定地将其更改为返回集合包含的任何内容。对于您在上面给出的 String 示例,那将是 a charor wchar_t

于 2010-02-16T16:24:29.247 回答