C++学习基础十二——纯虚函数与抽象类
一、C++中纯虚函数与抽象类:
1、含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数。
2、如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类。
3、如果一个类中含有虚函数,则必须将该类的析构函数声明为虚函数。
4、虚函数与纯虚函数的声明:
virtual void draw();//虚函数
virtual void draw() = 0;//纯虚函数
5、C++中支持两种多态性:
编译时多态:通过重载函数实现。
运行时多态:通过虚函数实现。
二、Java抽象函数与抽象类:
1、含有抽象方法的类成为抽象类,但抽象类不一定含有抽象方法。抽象类不能创建实例。
2、抽象方法必须使用abstract关键字修饰。
3、如果非抽象子类继承抽象类,则必须重写父类中所有的抽象方法。
三、C++接口:一个类中除了构造函数和析构函数外,只有纯虚函数,则该类成为接口 。
四、代码实现:
#include <iostream> using namespace std; //含有一个或多个纯虚函数的类成为抽象类,注意:此处指的是纯虚函数而不是虚函数
//纯虚函数的定义:virtual void draw() = 0;
//如果继承抽象类,则必须实现父类中所有的纯虚函数,否则该子类也为抽象类
//如果一个类中包含虚函数,则必须将本类的析构函数声明为虚函数。
class Shape
{
public:
Shape(){
}
virtual ~Shape(){
}
virtual double getArea() = ;//纯虚函数
virtual double getP() = ;
virtual void draw() = ;
}; class Circle : public Shape
{
public:
Circle(double r):itsRadius(r){
}
virtual ~Circle(){ }
double getArea(){
return 3.14 * itsRadius * itsRadius;
}
double getP(){
return * 3.14 * itsRadius;
}
void draw(){
cout<<"draw Circle..."<<endl;
}
private:
double itsRadius;
} ; class Rectangle : public Shape
{
public:
Rectangle(int w,int h):wid(w),hei(h){
}
virtual ~Rectangle(){
}
double getArea()
{
return wid * hei;
}
double getP()
{
return *(wid + hei);
}
void draw()
{
for(int i = ;i < ;i++)
{
for(int j = ;j < ;j++)
{
cout<<"X ";
}
cout<<endl;
}
}
private:
int wid;
int hei;
};
int main()
{
int number;
bool flag = false; Shape *shape;
while(flag == false)
{
cout<<"请输入数字:(1)圆形 (2)矩形 (0)退出:";
cin>>number;
switch(number)
{
case :
shape = new Circle(10.0);
break;
case :
shape = new Rectangle(,);
break;
case :
flag = true;
break;
} if(flag == false)
{
shape->draw();
delete shape;
}
}
return ;
}
后续更新中....
C++学习基础十二——纯虚函数与抽象类的更多相关文章
- C++基础(纯虚函数与抽象类)
C++基础之纯虚函数与抽象类 引言 纯虚函数在C++编程中的地位很重要,其关联到了设计模式中"接口"的概念. 语法 纯虚函数的语法: 1. 将成员函数声明为virtual 2. ...
- C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则
1 昨日回顾 2 多态的原理 1 要有继承 2 要有子类重写父类的虚函数 3 父类指针(或者引用)指向子类对象 (动态联编 虚函数表 3 证明vptr指针的存在 4 vptr指针在构造父类的时候是分步 ...
- C++复习:纯虚函数和抽象类
纯虚函数和抽象类 1基本概念 2抽象类案例 3抽象类在多继承中的应用 C++中没有Java中的接口概念,抽象类可以模拟Java中的接口类.(接口和协议) 3.1有关多继承的说明 工程上的多继承 被 ...
- c++-纯虚函数和抽象类
纯虚函数和抽象类 C面向接口编程和C多态 函数类型语法基础 函数指针做函数参数(回调函数)思想剖析 函数指针做函数参数两种用法(正向调用.反向调用) 纯虚函数 抽象类 抽象类基本概念 抽象类在多继承中 ...
- C++:纯虚函数与抽象类
5.4.3 纯虚函数和抽象类 纯虚函数是一个在基类中说明的虚函数,它在该基类中没有定义,但是要求在派生类中根据需要对它进行定义,或仍然说明为纯虚函数. 声明纯虚函数的一般格式是: virtual 函数 ...
- c++,纯虚函数与抽象类
1.纯虚函数的定义: (1)虚函数被“初始化”为0的函数.声明纯虚函数的一般形式是virtual 函数类型 函数名(参数表列) =0;(2)纯虚函数没有函数体:(3)最后面的“=0”并不表示函数返回值 ...
- 简单地说, cpp中的纯虚函数就是抽象类的具体实现
简单地说, cpp中的纯虚函数就是抽象类的具体实现.包含了纯虚函数的类就是抽象类.
- C++开发系列-纯虚函数和抽象类
概念 纯虚函数和抽象类 纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都实现该函数. 纯虚函数为各派生类提供了一个公共界面(接口的封装和设计.软件的模块功能的划分) 纯虚函数说明 ...
- cc32b_demo-32dk2j_cpp_纯虚函数与抽象类2-txwtech
cc32b_demo-32dk2j_cpp_纯虚函数与抽象类2-txwtech //纯虚函数是用来继承用的//纯虚函数//抽象类-抽象数据类型//*任何包含一个或者多个纯虚函数的类都是抽象类//*不要 ...
随机推荐
- 创建COM对象时遭遇 800702e4
SolidEdge st5(x64) SDK /vs2012/win8.1 x64 西夏普创建SEApplication COM对象时遭遇800702e4.翻来覆去的调vs进程的权限,调se进程的权限 ...
- j技术方案
采用.net4.0作为基础技术平台,原来是采用.net4.5的,但是后来发现.net4.5不支持Windows Server2003,所以又降为.net4.0. 1.asp.net mvc 4.0 用 ...
- 01 Linux入门介绍
一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以及游戏支持度不足 L ...
- RabbitMQ、Rdis
RabbitMQ RabbitMQ:官方网址:http://www.rabbitmq.com/ Install Erlang # rpm -ivh erlang-18.3-1.el6.x86_64.r ...
- Intellij IDEA +MAVEN+Jetty实现SpringMVC简单查询功能
利用 Intellij IDEA +MAVEN+Jetty实现SpringMVC读取数据库数据并显示在页面上的简单功能 1 新建maven项目,配置pom.xml <project xmlns= ...
- du 使用详解 linux查看目录大小 linux统计目录大小并排序 查看目录下所有一级子目录文件夹大小 du -h --max-depth=1 |grep [
常用命令 du -h --max-depth=1 |grep [TG] |sort #查找上G和T的目录并排序 du -sh #统计当前目录的大小,以直观方式展现 du -h --max-d ...
- 【MySQL】SQL优化系列之 in与range 查询
首先我们来说下in()这种方式的查询 在<高性能MySQL>里面提及用in这种方式可以有效的替代一定的range查询,提升查询效率,因为在一条索引里面,range字段后面的部分是不生效的. ...
- PHP入门part4
字符串函数 strlen(string); 获取字符串的长度,这里的长度是指该字符串的字节长度:!!utf-8里英文字母和符号占1个字节,中文是占3个字节. substr(string,number1 ...
- 备份触发器:ADDC3
CREATE OR REPLACE TRIGGER "XMV502"."ADDC3" before insert on bd_cubasdoc for each ...
- 在vue1.0遇到vuex和v-model的坑
事情是这样的,在开发项目的过程中我使用了vuex并且在store中定义了一个保存用户信息的对象 userInfo : { 'nickName' : '', // 昵称 'password' :'', ...