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

Оператор this и обращение к членам класса - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
13.09.2012, 21:10     Оператор this и обращение к членам класса #1
строка 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;
    }
спасибо

а строка №18 вообще,что читать почерк докторов в районной поликлиники....нипанятна.
Объясните плз
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2012, 21:10     Оператор this и обращение к членам класса
Посмотрите здесь:

C++ Доступ к членам класса класса
Доступ к private членам класса C++
Не удается передать значение членам класса C++
C++ Присваивание значений членам класса
C++ Доступ к закрытым членам базового класса
C++ Как получить доступ к членам класса из функций
Доступ к членам класса C++
C++ Сложности с получением доступа к членам класса
Доступ к членам одного класса с другого C++
C++ Доступ к членам класса
C++ Доступ к закрытым членам класса(шаблона)
C++ Инкрементация указателя по членам класса

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
755 / 688 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
13.09.2012, 21:40     Оператор this и обращение к членам класса #2
this - это указатель объекта на самого себя. В вашем примере его использование не обязательно.

Цитата Сообщение от RASHFor Посмотреть сообщение
строка this->b = new B; означает взять вдресс текущего объекта b и выделить под него память?так?
Не совсем. Взять указатель на B и создать объект типа b, выделив под него память в динамической области памяти.

Цитата Сообщение от RASHFor Посмотреть сообщение
а строка №18 вообще,что читать почерк докторов в районной поликлиники....нипанятна.
b указывает на объект типа B, поэтому к полям B нужно обращаться через оператор ->. this - это тоже указатель, но на текущий объект типа SomeClass. Поэтому обращение к полю k объекта, на который указывает b такое:
C++
1
this->b->k
w - это ссылка на SomeClass, поэтому обращаемся к его полю b через точку:
C++
1
w.b
, а к полю k опять же через ->
C++
1
w.b->k
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.09.2012, 14:30     Оператор this и обращение к членам класса #3
Цитата Сообщение от John Prick Посмотреть сообщение
Взять указатель на B и создать объект типа b, выделив под него память в динамической области памяти


Цитата Сообщение от RASHFor Посмотреть сообщение
строка this->b = new B; означает взять вдресс текущего объекта b и выделить под него память?так?
Нет. Здесь происходит следующее. Оператор new выделяет память под объект типа B и возвращает адрес начала выделенной области памяти. Этот адрес записывается в поле b того объекта, для которого был вызван метод, в котором эта конструкция написана.
Yandex
Объявления
15.09.2012, 14:30     Оператор this и обращение к членам класса
Ответ Создать тему
Опции темы

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