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

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

Войти
Регистрация
Восстановить пароль
 
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
#1

Обращение к функции через указатель - C++

09.09.2012, 16:20. Просмотров 410. Ответов 5
Метки нет (Все метки)

Добрый день.Объясните для незнающего след.код:в частности строку номер:6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class ListItem
{
public:
    void Append(ListItem *pItem)
    {
        pItem->m_pNext = this;
        m_pPrevious = pItem;
        m_pNext = NULL;
    }
private:
    ListItem *m_pNext;
    ListItem *m_pPrevious;
    int     m_data;
};
Я обращаюсь к m_pNext через укзатель pItem и присваиваю значение this.Так? Тогда почему не можно сделать просто m_pNext = this; ?
Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2012, 16:20     Обращение к функции через указатель
Посмотрите здесь:

Как вывести на экран переменную из функции, которой присваиваеться значение через указатель? C++
C++ Обращение к перегруженному оператору () через указатель на объект
C++ Создание функции инициализации двумерного массива строк через указатель
C++ Обращение к вектору полученному через указатель
Вызов функции из массива, через указатель C++
Обращение к элементам массива используя указатель C++
C++ Передать указатель функции через класс?
C++ Вызов виртуальной функции через указатель на базовый класс
C++ Обращение к элементам std::vector используя указатель
Массив в функции через указатель C++
Передача массива другой функции через указатель C++
массив классов, задание и обращение к элементам через указатель C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
09.09.2012, 16:28     Обращение к функции через указатель #2
Как то название темы не связано с содержанием.

Цитата Сообщение от RASHFor Посмотреть сообщение
тогда почему не можно сделать просто m_pNext = this; ?
потому что операция
C++
1
m_pNext = this;
в действительности означает
C++
1
this->m_pNext = this;
а нужно сделать именно
C++
1
pItem->m_pNext = this;
т.е. это далеко не одно и тоже.
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
09.09.2012, 16:40  [ТС]     Обращение к функции через указатель #3
т.е строка
C++
1
 pItem->m_pNext = this;
означает pItem присваивается значение this ?
MAKAPOH
30 / 20 / 1
Регистрация: 08.09.2012
Сообщений: 77
09.09.2012, 17:10     Обращение к функции через указатель #4
Насколько мне известно, эта запись означает следующее:
Взять адрес текущего объекта ListItem (переменная this) и записать его в переменную m_pNext объекта ListItem, адрес которого находится в переменной pItem.
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
13.09.2012, 20:53  [ТС]     Обращение к функции через указатель #5
строка this->b = new B; означает взять вдресс текущего объекта b и выделить под него память?так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class B{
public:
    int k;
    B(){
        k = 0;
    }
};
 
class SomeClass{
public:
    B *b;
    SomeClass(){
        b = new B;
    }
    // Конструктор копирования.        
    SomeClass(const SomeClass & w){
        this->b = new B;
        this->b->k = w.b->k;
    }
спасибо

Добавлено через 1 минуту
а строка №18 вообще,что читать почерк докторов в районной поликлиники....нипанятна.
Jupiter
Каратель
Эксперт C++
6548 / 3968 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.09.2012, 21:09     Обращение к функции через указатель #6
C++
1
this->b = new B;
означает создать в куче объект класса В и присвоить его адрес указателю на класс В, коим является this->b
C++
1
this->b->k
обращение к полю k класса В через указатель на объект класса В
Yandex
Объявления
13.09.2012, 21:09     Обращение к функции через указатель
Ответ Создать тему
Опции темы

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