|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.09.2008, 18:46 | #1 |
Пользователь
Регистрация: 25.09.2008
Сообщений: 40
|
Ссылка класса.
Что происходит если объявить ссылку класса:
Class *myClass; Будет выделяться память или это будет просто пустая ссылка в никуда?? |
28.09.2008, 18:56 | #2 |
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
myClass - указатель в никуда. И вообще, ссылка и указатель - разные вещи.
|
28.09.2008, 18:58 | #3 |
Пользователь
Регистрация: 25.09.2008
Сообщений: 40
|
|
28.09.2008, 19:15 | #4 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,520
|
Это Вы сами с собой разговариваете или нас спрашиваете зачем там класс написали?
Цитата:
Вообще указатель - он и в африке указатель. Что на int что на класс. Просто адрес в памяти. Тип указателю указывается для того, чтобы компилятор знал на что он должен указывать и по возможности не допускал ошибок программиста. Хотя есть нетипизированные указатели, если Вам приспичит вдруг ими воспользоваться |
|
28.09.2008, 19:48 | #5 |
Пользователь
Регистрация: 19.09.2008
Сообщений: 14
|
Class *myClass;
Это указатель с именем myClass на объект типа Class. Так как указателю не присвоено никакого значения, то он содержит мусор, какой-то левый адрес в памяти. Никакого объекта данного класса не создаётся. Т.е. это пустая ссылка в никуда, чтобы создать объект и данный указатель получил адрес этого объекта необходимо дописать ещё одну строчку myClass= new Class; В данном случае создастся объект класса Class и указатель myClass будет хранить адрес этого объекта. Через него же можно осуществлять доступ к методам и свойствам данного объекта, например myClass->x=5; |
28.09.2008, 20:01 | #6 | |
Пользователь
Регистрация: 25.09.2008
Сообщений: 40
|
Цитата:
int *myClass = new Class; |
|
28.09.2008, 20:28 | #7 | |
Пользователь Подтвердите свой е-майл
Регистрация: 28.11.2007
Сообщений: 42
|
А зачем так делать?Создавать объект указатель!Насколько я понимаю указатель-адрес.А адрес не объект.Это ссылка на объект.
Цитата:
|
|
28.09.2008, 21:08 | #8 |
Пользователь
Регистрация: 25.09.2008
Сообщений: 40
|
Ну к примеру класс B является потомком класса А, тогда почему
так можно: A *Class= new B; а так нельзя: B *Class= new A; ?? p.s. и вообще есть ли разница между A *Class= new B; и B *Class= new B; Последний раз редактировалось Scratch; 28.09.2008 в 21:20. |
28.09.2008, 21:18 | #9 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,520
|
потому что B = A + некий функционал, т.е. с объектом класса B можно работать как с объектом класса A, обратное не выполнимо
|
28.09.2008, 21:33 | #10 | |
Пользователь
Регистрация: 25.09.2008
Сообщений: 40
|
Цитата:
если A *Class; - это просто ссылка вникуда, то A здесь ничего не значит. тем не менее в: A*Class = new B; этот А начинает что-то значить, неувязка получается( |
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ссылка в паскале | vitekbest | Помощь студентам | 3 | 13.06.2008 17:50 |
Однаразовая ссылка | Stanislav | PHP | 5 | 07.03.2008 22:03 |
Ссылка из программы. | Kukkk | Общие вопросы Delphi | 1 | 21.09.2007 22:57 |
Ссылка в Label | amid1804 | Компоненты Delphi | 3 | 20.05.2007 17:27 |