纯虚函数与抽象类
来源:互联网 发布:烈焰遮天 源码 双端 编辑:程序博客网 时间:2024/06/01 10:39
1、纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本;
2、纯虚函数为各派生类提供一个公共界面(接口的封装设计);
3、纯虚函数说明形式:virtual 类型 函数名(参数表)= 0 ;
4、一个具有纯虚函数的基类称为抽象类。
1、如果子类继承抽象类,只有把所有的纯虚函数都实现了,才能实例化。
2、抽象类可以定义普通的函数、变量。
3、接口类(抽象类)中只有函数原型定义,没有任何数据的定义。
class figure{
public:
virtual void show_area() = 0 ;//纯虚函数
void printf()protected:
{
cout<<"test"<<endl;
}
double x;};
double y;
{
public:
tri(double x= 1, double y = 2)protected:
{
this->x = x;
this->y = y;
}
void show_area()
{
cout<<"三角形面积:"<<x*y*0.5<<endl;
}
private:
};
class square : public figure
{
public:
square(double x= 1, double y = 2)protected:
{
this->x = x;
this->y = y;
}
void show_area()
{
cout<<"四边形面积:"<<x*y<<endl;
}
private:
};
class circle : public figure
{
public:
circle(double x= 1, double y = 2)protected:
{
this->x = x;
this->y = y;
}
void show_area()
{
cout<<"圆的面积:"<<3.14*x*x<<endl;
}
private:
};
//通过抽象类的 纯虚函数 接口约定 (公共界面的约定)来实现具体的业务模型的填充
//(比继承代码复用更好一个级别的,属于框架的设计)
void objShow(figure *pBase)
{
pBase->show_area();//纯虚函数
}
void main()
{
//figure f1; //直接用抽象类定义具体的对象,error
figure *pBase = NULL; // 抽象类可以定义指针
tri t1;
square s1;
circle c1;
objShow(&t1);
objShow(&s1);
objShow(&c1);
}
总结:
(1)绝大多数面向对象语言都不支持多继承;
(2)绝大多数面向对象语言都支持接口的概念;
(3)C++中没有接口的概念;
(4)C++中可以使用纯虚函数实现接口;
(5)接口类(抽象类)中只有函数原型定义,没有任何数据的定义。
(6)抽象类不能实例化(定义对象),但是可以定义抽象类指针(实现多态)。
阅读全文
0 0
- 纯虚函数与抽象类
- 纯虚函数与抽象类
- 抽象类与纯虚函数
- C++纯虚函数与抽象类
- 纯虚函数与抽象类练习题
- C++纯虚函数与抽象类
- C++纯虚函数与抽象类
- 纯虚函数与抽象类
- C++抽象类与纯虚函数
- C++:纯虚函数与抽象类
- 抽象类与纯虚函数
- 纯虚函数与抽象类
- C++ 抽象类与纯虚函数
- C++ 纯虚函数与抽象类
- 纯虚函数与抽象基类
- C++纯虚函数与抽象类
- c++ 纯虚函数与抽象类
- C++纯虚函数与抽象类
- android 横竖屏幕切换
- Mybatis Plugin插件安装破解及使用
- CONCAT函数的介绍及mybatis 中模糊查询
- git图形化工具GitKraken的使用——删除文件(rm)
- leveldb学习---0
- 纯虚函数与抽象类
- python decode和encode
- Oracle那些事(9)-启动与关闭
- HDU 5517 Triple (线段树)
- 搜索插入位置
- 【Gradle】eclipse导入Gradle项目
- 机器学习实战-使用朴素贝叶斯分类器来做垃圾邮件分类
- 我的网络编程学习之路——getsockname 和 getpeername 函数
- Codeforces Round #419 (Div. 2)_Karen and Coffee