본문 바로가기

프로그래밍/C_C++

가상함수

#include <iostream>

using namespace std;

class NoVirtualClass
{
public:
 int a;
 int b;
 int c;
 int d;
 void fun1()
 {
  cout << "안 버츄얼 클래스 : ";
 }
};


class VirtualClass
{
public:
 int a;
 int b;
 int c;
 int d;
 virtual void fun1()
 {
  cout << " 버츄얼 클래스 : ";
 }
};


void main()
{
 NoVirtualClass* nv = new NoVirtualClass();
 VirtualClass* v = new VirtualClass();

 nv->fun1();//
 cout << sizeof(*nv) << endl;
 v->fun1();//
 cout << sizeof(*v) << endl;
}

가상함수 있는 메서드가. 크기가 4가 더 크다.
가상함수 테이블의 테이블까지. 필요