Jak wspomniano w [9.2.2.1/1] w wersji roboczej (wskaźnik this):
Rodzaj tym w funkcji składowej klasy X to X *.
Zauważmy, że konstruktor jest Specjalna funkcja członek i A
jest podobiekt z B
, zatem wskaźnik this
wewnątrz ciała funkcji członkowskich A
jest typu A*
, gdy jest on typu B*
zasięgu funkcje składowe B
.
Należy również zauważyć, że numery this
od A
i this
od mogą również mieć różne wartości, tzn. Mogą wskazywać na różne podobiekty.
Jako przykład:
#include<iostream>
struct A {
A() { std::cout << this << std::endl; }
int i{0};
};
struct B: A {
B() { std::cout << this << std::endl; }
virtual void f() {}
};
int main() {
B b;
}
stwierdzili, że:
Czy to znaczy typ ten wskaźnik przekazany do konstruktora A()
jest typu A
?
Nie, nie jest. Jest to typ A*
.
EDIT
Pomimo OP edytowane pytanie i zmieniły swoje znaczenie, wolałbym zostawić w tym odpowiedzi na cytat z pierwotnego pytania.
Wycofanie byłoby dobrym działaniem dla tej edycji.
W każdym razie odpowiedź nadal obowiązuje.
W kodzie nie ma wirtualnych znaków, więc wszystkie pisanie odbywa się wyłącznie statycznie. – Angew
@Angew: To ma jednak niewiele wspólnego z tym pytaniem. –
@Angew, jeśli dodam metodę wirtualną w A, wynik jest taki sam, chociaż – Loay