//可以使用抽象类的指针或引用。抽象类里的纯虚函数可以是有函数体。任何情况下都不能得到抽象类的对象,抽象类和普通类的区别是,抽象类不能实例化
//牢记实现虚机制的要求virtual
#include <iostream>
using namespace std;
class Pet {//抽象类
public:
static int i;///抽象类的数据
virtual void speak() = 0;///纯虚函数也可以有函数体
virtual void eat() = 0;
virtual void kkk();非纯虚函数
};
int Pet::i=1;
void Pet::speak() {
cout << "Pet::speak()" <<i++<< endl;
}
void Pet::eat() {
cout << "Pet::eat()" <<i++<< endl;
}
void Pet::kkk() {
cout << "kkk()" <<i++<< endl;
}
class Dog : public Pet {
public:
void speak() { Pet::speak();}//重定义纯虚函数
void eat() { Pet::eat(); }这貌似是自身重定义
};
void main() {
Dog simba;
Pet *pt=&simba;//指针
pt->speak();
pt->eat();
pt->kkk();///调用基类的非纯虚函数
cout<<endl;
Dog &am