纯虚函数和抽象类
纯虚函数和抽象类
#include <iostream>
using namespace std;
class People
{
public:
virtual void speak() = 0; //声明speak为纯虚函数,所在的类为抽象类,只能被继承
};
//子类如果没有实现父类的纯虚函数,则编译不通过
class Chinese :public People
{
public:
void speak()
{
cout << "say hello!" << endl;
}
};
//有纯虚函数的class为抽象类
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 //final禁止虚函数,被子类重写
{
cout << "People speak method" << endl;
}
virtual void run()
{
cout << "People run " << endl;
}
};
class Chinese :public People
{
public:
//void speak() //子类不能重写该方法
//{
// cout << "say hello!" << endl;
//}
void run() override //override代表子类重写父类的run虚函数
{
cout << "Chinese run " << endl;
}
};
int main(int argc, char *argv[])
{
Chinese c;
cin.get();
return 0;
}
虚基类和虚继承
#include <iostream>
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;
}
秋风
2018-04-20