/*======================================================================
虚函数:
virtual double calcArea(){return 0;}
纯虚函数:
virtual double calcArea()=0;
没有函数体 函数名后面加上=0;
从虚函数表的角度分析纯虚函数实现原理:
vftable_ptr(虚函数表指针)->虚函数表0xccff=0;
若果是纯虚函数,在虚函数表中是0,表示没有函数地址。
抽象类:
包括纯虚函数的类叫做抽象类。
抽象类不允许被实例化对象。
抽象类可以被抽象类继续继承。
/*======================================================================*/
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
Person(string name)
{
this->m_strName = name;
}
virtual ~Person() {}
virtual void work() = 0;//纯虚函数
protected:
private:
string m_strName;
};
class Worker:public Person
{
public:
Worker(string name,int age):Person(name)
{
this->m_iAge = age;
}
virtual ~Worker() {};
virtual void work()
{
//cout << "我是一个工人!" << endl;
}
protected:
private:
int m_iAge;
};
class DustName:public Worker
{
public:
DustName(string name, int age):Worker(name,age){}
virtual ~DustName() {}
virtual void work()
{
cout << "我是清洁工" << endl;
}
protected:
private:
};
int main()
{
DustName a("zhangsan",21);
Worker b("zhang", 21);
b.work();
}C++纯虚函数
最新推荐文章于 2024-05-09 00:23:32 发布
826

被折叠的 条评论
为什么被折叠?



