Каковы значения по умолчанию для оператора <и оператора [] в C ++ (Visual Studio 6)? - PullRequest
1 голос
/ 16 февраля 2010

Я унаследовал большой проект Visual Studio 6 C ++, который необходимо перевести на VS2005. Некоторые из классов определены оператором <и оператором [], но не указывают типы возврата в объявлениях. VS6 позволяет это, но не VS2005. </p>

Мне известно, что стандарт 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). время)? </p>

Конечно, я должен добавить типы возвращаемых данных, чтобы сделать этот код совместимым с VS2005 C ++, но я хочу убедиться, что вы указали тот же тип, что и раньше, чтобы не сразу изменять поведение программы (сейчас мы собираемся для совместимости) ; мы стандартизируем вещи позже).

1 Ответ

1 голос
/ 16 февраля 2010

operator< возвращает bool по умолчанию.

operator[] возвращает int по умолчанию (я думаю ), но его почти наверняка следует изменить, чтобы оно возвращало все содержимое коллекции. Для приведенного выше примера String это будет char или wchar_t.

...