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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#include<iostream>
#include<memory>
using namespace std;
class A{
public:
A() : pa(new int){}
~A() {delete pa;}
virtual void fn() {cout << "Class A" << endl;}
private:
int* pa;
};
class B : public A{
public:
B() : pb(new int){}
~B() {delete pb;}
void fn() {cout << "Class B" << endl;}
private:
int* pb;
};
class C :public A{
public:
C() : pc(new int){}
~C() {delete pc;}
void fn() {cout << "Class C" << endl;}
private:
int* pc;
};
int main (){
auto_ptr<A> a1(new B());
C c;
A& a2 = c;
a1->fn();
a2.fn();
system("pause");
return 0;
} |