#include <iostream>
#include <string>
using std::cout;
using std::endl;
class AAA
{
public:
AAA(const char c = 'a'):n(c)
{ cout << "new AAA\n"; }
virtual char print() = 0;
char printa()
{ return n; }
virtual ~AAA() = 0;
protected:
char n;
};
//AAA::~AAA()
//{ cout << "delete AAA\n"; }
class BBB : public AAA
{
public:
BBB(const char c ) :n(c)
{ cout << "new BBB\n"; }
char print()
{ return n; }
virtual ~BBB()
{ cout << "delete BBB\n";}
protected:
char n;
};
int main()
{
// 基类是抽象类,子类必须实现基类中的纯虚函数,
// 基类,可以也无须实现自己的纯虚函数,但析造函数是纯虚函数时,则必须在基类中实现其方法
BBB *bbb= new BBB('b');
AAA *aaa = new BBB('r');
cout << "BBB class " << bbb->print() << endl; //b
cout << "BBB class" << aaa->printa() << endl; // a
delete bbb;
delete aaa;
//AAA a; // 不能实例化抽象类
system("pause");
return 0;
}
#include <string>
using std::cout;
using std::endl;
class AAA
{
public:
AAA(const char c = 'a'):n(c)
{ cout << "new AAA\n"; }
virtual char print() = 0;
char printa()
{ return n; }
virtual ~AAA() = 0;
protected:
char n;
};
//AAA::~AAA()
//{ cout << "delete AAA\n"; }
class BBB : public AAA
{
public:
BBB(const char c ) :n(c)
{ cout << "new BBB\n"; }
char print()
{ return n; }
virtual ~BBB()
{ cout << "delete BBB\n";}
protected:
char n;
};
int main()
{
// 基类是抽象类,子类必须实现基类中的纯虚函数,
// 基类,可以也无须实现自己的纯虚函数,但析造函数是纯虚函数时,则必须在基类中实现其方法
BBB *bbb= new BBB('b');
AAA *aaa = new BBB('r');
cout << "BBB class " << bbb->print() << endl; //b
cout << "BBB class" << aaa->printa() << endl; // a
delete bbb;
delete aaa;
//AAA a; // 不能实例化抽象类
system("pause");
return 0;
}