Проще говоря (сюда не входит сложность виртуальной функции):
this
- это указатель , который указывает на объект, который был построен, и это первый параметр, передаваемый любой не-функции c.
Так, например,
class X { void foo() {} } ;
X x;
Когда вы делаете x.foo()
, первый невидимый параметр foo () равен &x
. Когда вы делаете x.foo()
, вы фактически делаете foo(&x)
на уровне сборки.
Технически (на уровне сборки) конструктор - это просто функция, как любая другая функция-член, единственное отличие состоит в том, что называется строительство объекта. Он также принимает указатель this, как и любой другой участник c.
Итак, ваши вопросы c) и d) верны.