Правильное определение ключевого слова this в c ++? - PullRequest
1 голос
/ 07 февраля 2020

Я изучаю теорию, стоящую за OOP программированием на C ++. Наш профессор предоставил нам несколько типовых вопросов, чтобы мы могли внести изменения до экзамена. Не могли бы вы взглянуть и проверить правильность моего понимания этого термина? Буду очень благодарен за любые советы.

The this keyword:
a) Inside a constructor, it is a reference to currently constructed object. (false)
b) In the method, it is a reference to the object for which it was called (true)
c) Inside the constructor it is a pointer to currently constructed object. (false)
d) In the method, it is a pointer to the object for which it was called. (false)

1 Ответ

4 голосов
/ 07 февраля 2020

Проще говоря (сюда не входит сложность виртуальной функции):

this - это указатель , который указывает на объект, который был построен, и это первый параметр, передаваемый любой не-функции c.

Так, например,

class X  { void foo() {} } ;
X x;

Когда вы делаете x.foo(), первый невидимый параметр foo () равен &x. Когда вы делаете x.foo(), вы фактически делаете foo(&x) на уровне сборки.

Технически (на уровне сборки) конструктор - это просто функция, как любая другая функция-член, единственное отличие состоит в том, что называется строительство объекта. Он также принимает указатель this, как и любой другой участник c.

Итак, ваши вопросы c) и d) верны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...