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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

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

11.03.2013, 01:36. Просмотров 1194. Ответов 4
Метки нет (Все метки)

Разбираю пример с учебника:
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 - C++
Кто-нибудь может объяснить зачем в C++ , а конкретно в ООП нужен оператор tepeid. Что он делает и т.п. Вот например что делает данная...

Typeid - C++
ошибка непонятная мне в 43-44 строке (((( #include&lt;iostream&gt; #include&lt;typeinfo&gt; #include&lt;cstdlib&gt; using namespace std; ...

Typeid в clion - C++
Почему при током коде CLion выводит 1T? И что это значит? #include &lt;iostream&gt; #include &lt;typeinfo&gt; class A{ public: int k; }; ...

присвоение typeid - C++
При использовании cout&lt;&lt;typeid(/*...*/).name()&lt;&lt;&quot;\n&quot;; выдается что переменная входит в класс, например, Object Есть ли возможность...

Проверка типа (typeid) - C++
Подскажите пожалуйста как можно правильно реализовать такую вещь: если тип переменной и == int то.... нагуглил функцию:...

Как работает typeid( ).name() в minigw? - C++
Почему typeid( ).name() в minigw возвращает не просто тип аргумента, а ещё и две цифры перед ним? Кусок кода: for ( size_t j = 0; j...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 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
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.03.2013, 01:44  [ТС]     typeid и классы #3
И почему вместо типов int и float выводит имена переменных? В учебнике там как раз имена типов.

Добавлено через 3 минуты
А можете кратко объяснить в чём соль? Я с английским не совсем "на ты".
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
11.03.2013, 01:53     typeid и классы #4
Соль в том, что метод typeid::name() предназначен для людей. Он не обязан выводить уникальный идентификатор типа. И не обязан выводить что-то постоянное независимо от версии рантайма, компилятора и фаз Луны. Он вообще может ничего не выводить. Это просто строка, которая "как-то" характеризует то, от чего взят typeid. Что именно там будет — решает данная версия компилятора. gcc, как видите, тупо выводит имя сущности из таблицы символов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2013, 01:58     typeid и классы
Еще ссылки по теме:

Название типа объекта typeid - C++
Когда вывожу название типа объекта, то перед ним появляются цифры 4 и 8. что они означают? В низу показал что выводит программа ...

Пример применения оператора typeid к шаблонным классам - C++
В книге Шилдт Г. С++ Базовый курс, 3-е издание,2010 приведен пример применения оператора typeid к шаблонным классам стр. 481-482, вот...

Почему typeid().name дописывает цифры к названию при выводе? - C++
Определяю тип данных: #include&lt;iostream&gt; #include&lt;typeinfo&gt; using namespace std; struct point { int x, y;

typeid && dynamic_cast - C++
Здравствуйте! а можно ли вот так написать? bool Item::operator==(Ware * w) const { if (typeid(*w) == typeid(*this)) ...

Классы - C++
Разработать классы для описанного ниже объекта.Включить в класс методы(...),get (...),show (...).Определить другие методы.Написать...

Классы с++ - C++
Правильно ли я описал класс? #include &quot;stdafx.h&quot; #include &lt;algorithm&gt; #include &lt;iostream&gt; using namespace std; int main(int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 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 и классы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru