我继承了一个需要为VS2005翻译的大型Visual Studio 6 C ++项目。一些类定义了运算符<和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&lt;应该返回一个bool(而不是一直将结果转换为int)?
当然我必须添加返回类型才能使这个代码与VS2005 C ++兼容,但我想确保指定与以前相同的类型,以便不立即改变程序行为(我们目前要兼容;我们稍后会标准化。)
答案 0 :(得分:1)
operator<
默认返回bool
。
operator[]
会返回int
(我认为),但几乎肯定会更改它以返回集合包含的内容。对于上面给出的字符串示例,可以是char
或wchar_t
。