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

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

Войти
Регистрация
Восстановить пароль
 
mrKi
2 / 2 / 0
Регистрация: 01.08.2013
Сообщений: 60
#1

Указатель,объект класса размещенный в динамической памяти - C++

01.08.2013, 22:26. Просмотров 459. Ответов 5
Метки нет (Все метки)

Ребят,такой маленький нелепый вопрос. Как можно обратиться к объекту класса созданному в динамической памяти(через "new")?;
В моей книге описано два способа. Первый ,к примеру вот
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
class cat
{
      public:
             int a;
};
int main()
{
 cat *pNelsi= new cat;
 (*pNelsi).a=10;
 cout<<(*pNelsi).a<<endl;
 system("pause");
}
работает без проблем. Но так же описан и второй (не через скобки а через ->).Ниже пример;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
class cat
{
      public:
             int a;
};
int main()
{
 cat *pNelsi= new cat;
 (*pNelsi).a=10;
 cout<<*pNelsi->a<<endl;
 system("pause");
}
Так вот этот второй вариант и не работает,почему? Не так важно,есть ведь и первый ,но хотелось бы до конца разобраться)
P.S. про то что после использование память нужно освободить через delete пожалуйста не пишите, в торопях пример писал
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2013, 22:26     Указатель,объект класса размещенный в динамической памяти
Посмотрите здесь:

C++ Как можно узнать размер выделенной динамической памяти, на которую ссылается указатель a?
Указатель на объект класса C++
Классы. Объявить массив динамически и сделать указатель на объект в динамической памяти C++
Обращение к свойству класса в динамической памяти C++
C++ Ошибка при попытке разыменовать указатель, который размещен в динамической памяти другим процессом
Размещение класса в динамической памяти C++
Объект класса в динамической памяти C++
C++ Как создать объект класса в динамической памяти?
C++ Указатель на объект, или экземпляр класса?
C++ Статический указатель класса на объект этого же класса
C++ Двойной указатель на объект класса
C++ Указатель на объект из указателя на член класса

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Valentina
68 / 68 / 3
Регистрация: 13.05.2012
Сообщений: 130
01.08.2013, 22:28     Указатель,объект класса размещенный в динамической памяти #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
class cat
{
      public:
             int a;
};
int main()
{
 cat *pNelsi= new cat;
 (*pNelsi).a=10;
 cout<<pNelsi->a<<endl;
 system("pause");
}
alsav22
5411 / 4807 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.08.2013, 22:38     Указатель,объект класса размещенный в динамической памяти #3
Тогда уж так:
C++
1
2
pNelsi ->a = 10;
cout << pNelsi ->a << endl;
zer0mail
2309 / 1935 / 192
Регистрация: 03.07.2012
Сообщений: 6,938
Записей в блоге: 1
01.08.2013, 23:02     Указатель,объект класса размещенный в динамической памяти #4
Если p - указатель на объект, то (*p).a и p->a равноценны (но 2-й вариант короче).
Кроме того, *p->a не то же самое: берется объект, на который указывает поле а в объекте, на который указывает p (длинно, но зато точно)
Может, так будет понятнее: *p->a то же самое, что *(p->a).

А еще есть ссылки и интеллектуальные (они же умные) указатели...
mrKi
2 / 2 / 0
Регистрация: 01.08.2013
Сообщений: 60
01.08.2013, 23:12  [ТС]     Указатель,объект класса размещенный в динамической памяти #5
Спасибо ,ребят ) Всему виной моя невнимательность.. Не так переписал пример из книги.
Отдельное спасибо zero0mail за понятное разъяснение!)
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
02.08.2013, 01:36     Указатель,объект класса размещенный в динамической памяти #6
и динамическая память тут не причём. Это работает с указателями на любые структуры хоть выделенные new, хоть хранящиеся в переменных.
Но это так, дополнение.
Yandex
Объявления
02.08.2013, 01:36     Указатель,объект класса размещенный в динамической памяти
Ответ Создать тему
Опции темы

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