반응형
----------------------------------------------------
가상 함수 사용시 소멸자에도 가상 함수를 사용해야 한다.
----------------------------------------------------
#include <iostream>
using namespace std;
/*** Class alpha ***/
class alpha
{
public:
int _x;
public:
alpha();
alpha(int x);
alpha(const alpha& pt);
void print(); // virtual 함수를 사용할 경우와 사용하지 않을 경우의 차이
};
alpha::alpha()
{
_x=0;
}
alpha::alpha(int x)
{
_x=x;
}
alpha::alpha(const alpha& pt)
{
_x=pt._x;
}
void alpha::print()
{
cout << "alpha = " << _x << endl;
}
/*** Class beta ***/
class beta : public alpha
{
public:
int _y;
public:
beta();
beta(int y);
beta(const beta& pu);
void print();
};
beta::beta()
{
_y=0;
}
beta::beta(int y)
{
_y=y;
}
beta::beta(const beta &pu)
{
_y=pu._y;
}
void beta::print()
{
cout << "beta = " << _y << endl;
}
/*** Class gamma ***/
class gamma : public alpha
{
public:
int _z;
gamma();
gamma(int z);
gamma(const gamma& pv);
void print();
};
gamma::gamma()
{
_z=0;
}
gamma::gamma(int z)
{
_z=z;
}
gamma::gamma(const gamma& pv)
{
_z=pv._z;
}
void gamma::print()
{
cout << "gamma = " << _z << endl;
}
/*** main ***/
int main()
{
// 클래스 타입 선언
alpha a;
beta b;
gamma c;
a.print();
b.print();
c.print();
cout << endl;
// alpha 객체 배열
alpha *arr[3];
arr[0]=&(a=10);
arr[1]=&(b=20);
arr[2]=&(c=30);
for(int i=0; i<3; i++)
arr[i]->print();
return 0;
}
가상함수 없을 때 (원본 코드)
alpha 클래스에 가상 함수를 적용 했을 때
반응형
'System Programmings > C++' 카테고리의 다른 글
[C++] 퀵 정렬 (Quick Sort) C++ 이용한 다른 소스 (2) | 2010.10.06 |
---|---|
[C++] 로또 뽑기 (난수 발생 & setw()함수 사용법) (0) | 2010.07.12 |
[C++] 상속된 클래스에서 형변환 & 가상 함수 (0) | 2010.07.08 |
[C++] 얕은 복사의 착각 (0) | 2010.07.07 |
[C++] 클래스 포함 (0) | 2010.07.06 |