我继承了一个需要为 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
默认情况下(我认为),但几乎肯定应该将其更改为返回集合包含的任何内容。对于上面给出的字符串示例,这将是 char
或 wchar_t
.
关于c++ - C++ (Visual Studio 6) 中 operator< 和 operator[] 的默认返回值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274356/