Форум программистов, компьютерный форум CyberForum.ru

typeid и классы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.03.2013, 01:36     typeid и классы #1
Разбираю пример с учебника:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <typeinfo>
 
class myclass
{
    int i;
};
 
int main()
{
    int i, j;
    float f;
    myclass ob; 
 
    std::cout << typeid(i).name() << '\n';
    std::cout << typeid(f).name() << '\n';
    std::cout << typeid(ob).name() << '\n';
 
    if (typeid(i) == typeid(j))
        std::cout << "i and j equal.\n";
    if (typeid(j) != typeid(f))
        std::cout << "j and f have different types.\n";
 
    return 0;
}
У меня вопрос: "что за цифра 7 перед именем класса?"
Bash
1
2
3
4
5
6
7
8
ilyuha21st@coldshoot:~/Projects$ g++ -Wall -pedantic main.cpp -o prog
ilyuha21st@coldshoot:~/Projects$ ./prog
i
f
7myclass
i and j equal.
j and f have different types.
ilyuha21st@coldshoot:~/Projects$
http://ideone.com/503QfI
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 01:36     typeid и классы
Посмотрите здесь:

typeid && dynamic_cast C++
delete или new (typeid(void*))(void*) C++
Как работает typeid( ).name() в minigw? C++
присвоение typeid C++
Проверка типа (typeid) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.03.2013, 01:40     typeid и классы #2
http://en.wikipedia.org/wiki/Name_mangling

Цитата Сообщение от xtorne21st Посмотреть сообщение
что за цифра 7 перед именем класса?
а троечку не хо? http://*******/RJclK
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.03.2013, 01:44  [ТС]     typeid и классы #3
И почему вместо типов int и float выводит имена переменных? В учебнике там как раз имена типов.

Добавлено через 3 минуты
А можете кратко объяснить в чём соль? Я с английским не совсем "на ты".
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
11.03.2013, 01:53     typeid и классы #4
Соль в том, что метод typeid::name() предназначен для людей. Он не обязан выводить уникальный идентификатор типа. И не обязан выводить что-то постоянное независимо от версии рантайма, компилятора и фаз Луны. Он вообще может ничего не выводить. Это просто строка, которая "как-то" характеризует то, от чего взят typeid. Что именно там будет — решает данная версия компилятора. gcc, как видите, тупо выводит имя сущности из таблицы символов.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.03.2013, 01:58     typeid и классы #5
Данные которые предоставляет typeid - implemetation defined т.е. зависят от того что там разработчики компилятора "понапихали".
Конкретно gcc применяет name mangling для именования типов.
VS печатает имена типов как есть.
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
typeid::name()
type_info::name
Yandex
Объявления
11.03.2013, 01:58     typeid и классы
Ответ Создать тему
Опции темы

Текущее время: 18:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru