我继承了一个需要为 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++ 兼容,但我想确保指定与以前相同的类型,以免立即更改程序行为(我们目前正在寻求兼容性;我们稍后会标准化)。