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

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

Восстановить пароль Регистрация
 
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
09.09.2012, 16:20     Обращение к функции через указатель #1
Добрый день.Объясните для незнающего след.код:в частности строку номер: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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 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++
6543 / 3963 / 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     Обращение к функции через указатель
Ответ Создать тему
Опции темы

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