RabraBabr
@RabraBabr

Детерминирована ли реализация typeid?

Есть такая статья: "Принцип открытости-закрытости". Там есть Листинг 6.

Я так и раньше делал (когда то в другой жизни). Но чуток подзабыл.
Там есть код:
char* Shape::typeOrderTable[] =
{
    "Circle",
    "Square",
    0
};

Далее строки
if (strcmp(tableEntry, thisType) == 0)
Но перед этим код:
const char* thisType = typeid(*this).name();

Теперь вопрос:
Правда ли typeid(myint).name() возвращает std::type_info со спецификацией:
Returns an implementation defined null-terminated character string containing the name of the type. No guarantees are given; in particular, the returned string can be identical for several types and change between invocations of the same program.


При том:
null-terminated character string containing the name of the type.


Possible output: 4Base. Первый чар 4 (но не обязательно) - длина строки. Но зачем? Строка ведь нуль терминирована.

Значит есть вариант, что код из листинга не скомпилируется?
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Не детерминирована.
В зависимости от компилятора, может скомпилироваться, но не заработать правильно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы