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

Указатель на тип данны - C++

Восстановить пароль Регистрация
 
Destank
99 / 99 / 10
Регистрация: 26.01.2012
Сообщений: 339
Записей в блоге: 1
14.09.2012, 20:08     Указатель на тип данны #1
Если я правильно понял то:
C++
1
2
3
4
5
struct Vector{
    int x;
    int y;
    
}Ve;
Vector - тип данных такой же как int только самописный,
Ve - переменная этого типа
C++
1
typedef Vector Vec;
теперь Vec точно такой же тип данных как и Vector, непонятно правда зачем такие заморочки, нет бы всегда объявлять переменные через Vector.
C++
1
2
3
4
5
6
7
8
9
10
11
int main(){
    Vector A;
    Vec G;
    
 
    A.x=10;
    Ve.x=6;
    G.x=7;  
 
    return 0;
}
Все переменные объявленные по разному работают одинаково.
Всё бы норм, но что значит
C++
1
typedef Vector *Veee;
указатель на тип данных???
теерь Veee тоже тип как Vector или Vec? ссылка на переменную еще понятна, но на тип вообще как то странно. Как работает такая запись?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
14.09.2012, 20:28     Указатель на тип данны #2
Цитата Сообщение от Destank Посмотреть сообщение
Как работает такая запись?
Работает как "считать, что тип данных Veee это на самом деле Vector* (указатель на Vector)".
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.09.2012, 20:51     Указатель на тип данны #3
подростете - поймете.
вот один из примеров. есть класс, в котором используется какой-то контейнер, с ним что-то делается, и т.п. везде в коде упоминается тип этого контейнера:
C++
1
2
3
4
5
6
7
class Foo
{
   typedef std::vector<int> Container;
   Container m_container;
   ...
   ...
};
Потом наступает момент, когда вы понимаете, что вектор не подходит, нужен другой контейнер. И вот так заменой одной строки
typedef std::deque<int> Container;
везде внутри класса уже дек используется. Если не использовались какие-то особые фичи вектора, которых нет у дека - то на этом писанина заканчивается. Все исправилось. Все таки, скорее всего все равно придется код поредактировать, но работы уже меньше.



Еще можно привести аналогию с магическими числами и именованной константой вместо нее.

всюду в коде может встречатся какое-нибудь магическое число, которое с первого взгляда непонятно что означает. например 256. Но вот если заменить 256 на именованную константу вроде
const unsigned MAX_BUFFER_SIZE = 256 и ее использовать - то снатонвится все понятнее. Вот в такой аналогии std::vector<int> - магический тип, а typedef std::deque<int> Container - ввод именованного типа. Container - не очень удачное название но все же.
Destank
99 / 99 / 10
Регистрация: 26.01.2012
Сообщений: 339
Записей в блоге: 1
14.09.2012, 21:11  [ТС]     Указатель на тип данны #4
Ооо, я стек и очередь пытаюсь понять, запнулся на указателе на тип, а вы уже ооп грузите ...
Yandex
Объявления
14.09.2012, 21:11     Указатель на тип данны
Ответ Создать тему
Опции темы

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