运算符的默认返回值是什么?和C ++中的operator [](Visual Studio 6)?

时间:2010-02-16 16:19:22

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

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

1 个答案:

答案 0 :(得分:1)

operator<默认返回bool

默认情况下,

operator[]会返回int(我认为),但几乎肯定会更改它以返回集合包含的内容。对于上面给出的字符串示例,可以是charwchar_t