纯虚函数和抽象类
#include <iostream>
using namespace std;
class People
{
public:
virtual void speak() = 0;
};
class Chinese :public People
{
public:
void speak()
{
cout << "say hello!" << endl;
}
};
int main(int argc, char *argv[])
{
Chinese c;
cin.get();
return 0;
}
final 和override
#include <iostream>
using namespace std;
class People
{
public:
virtual void speak() final
{
cout << "People speak method" << endl;
}
virtual void run()
{
cout << "People run " << endl;
}
};
class Chinese :public People
{
public:
void run() override
{
cout << "Chinese run " << endl;
}
};
int main(int argc, char *argv[])
{
Chinese c;
cin.get();
return 0;
}
虚基类和虚继承
using namespace std;
//被子类使用virtual关键字的类被称为虚基类
class People
{
public:
};
class Chinese :public virtual People //子类继承父类,加virtual关键字称为虚继承,子类存储父类的地址
{
public:
};
int main(int argc, char *argv[])
{
Chinese c;
cout << "Chinese Size:" << sizeof(Chinese) << endl;
cin.get();
return 0;
}