테스트 환경
- win10
- visual studio 2012
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <stdio.h>
#pragma warning(disable:4996)
class A {
public:
A() : a(1) { }
virtual void f() { printf("A::f() = %d\n", a); }
int a;
};
class B : public A {
public:
B() : A() {
a = 2;
this->A::A();
}
void f() { printf("B::f() = %d\n", a); }
};
int main() {
A a;
B b;
A *pB = &b;
a.f();
b.f();
pB->f();
return 0;
}
|
cs |
결론
- 객체마다 vfpr에 대한 정보를 가지고 있으며,
해당 정보는 생성자 호출(초기화 리스트 처리 이후) 시 초기화 된다.
- 자식 B 생성자 내부에서 부모 A 생성자를 호출한 경우, (this->A::A();)
A class vfptr 정보로 다시 덮어 쓰여진다.
'스터디 > C++' 카테고리의 다른 글
R-Value (0) | 2019.01.07 |
---|---|
proxy class (0) | 2019.01.07 |