一、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++学习基础十二——纯虚函数与抽象类的更多相关文章

  1. C++基础(纯虚函数与抽象类)

    C++基础之纯虚函数与抽象类 引言 纯虚函数在C++编程中的地位很重要,其关联到了设计模式中"接口"的概念. 语法 纯虚函数的语法: 1.  将成员函数声明为virtual 2.  ...

  2. C++基础 (7) 第七天 多态的原理 纯虚函数和抽象类 依赖倒置原则

    1 昨日回顾 2 多态的原理 1 要有继承 2 要有子类重写父类的虚函数 3 父类指针(或者引用)指向子类对象 (动态联编 虚函数表 3 证明vptr指针的存在 4 vptr指针在构造父类的时候是分步 ...

  3. C++复习:纯虚函数和抽象类

    纯虚函数和抽象类 1基本概念 2抽象类案例   3抽象类在多继承中的应用 C++中没有Java中的接口概念,抽象类可以模拟Java中的接口类.(接口和协议) 3.1有关多继承的说明 工程上的多继承 被 ...

  4. c++-纯虚函数和抽象类

    纯虚函数和抽象类 C面向接口编程和C多态 函数类型语法基础 函数指针做函数参数(回调函数)思想剖析 函数指针做函数参数两种用法(正向调用.反向调用) 纯虚函数 抽象类 抽象类基本概念 抽象类在多继承中 ...

  5. C++:纯虚函数与抽象类

    5.4.3 纯虚函数和抽象类 纯虚函数是一个在基类中说明的虚函数,它在该基类中没有定义,但是要求在派生类中根据需要对它进行定义,或仍然说明为纯虚函数. 声明纯虚函数的一般格式是: virtual 函数 ...

  6. c++,纯虚函数与抽象类

    1.纯虚函数的定义: (1)虚函数被“初始化”为0的函数.声明纯虚函数的一般形式是virtual 函数类型 函数名(参数表列) =0;(2)纯虚函数没有函数体:(3)最后面的“=0”并不表示函数返回值 ...

  7. 简单地说, cpp中的纯虚函数就是抽象类的具体实现

    简单地说, cpp中的纯虚函数就是抽象类的具体实现.包含了纯虚函数的类就是抽象类.

  8. C++开发系列-纯虚函数和抽象类

    概念 纯虚函数和抽象类 纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都实现该函数. 纯虚函数为各派生类提供了一个公共界面(接口的封装和设计.软件的模块功能的划分) 纯虚函数说明 ...

  9. cc32b_demo-32dk2j_cpp_纯虚函数与抽象类2-txwtech

    cc32b_demo-32dk2j_cpp_纯虚函数与抽象类2-txwtech //纯虚函数是用来继承用的//纯虚函数//抽象类-抽象数据类型//*任何包含一个或者多个纯虚函数的类都是抽象类//*不要 ...

随机推荐

  1. PetaPoco ORM 增加返回DataTable的方法

    public DataTable ExecuteDataTable(Sql sql) { return ExecuteDataTable(sql.SQL, sql.Arguments); } publ ...

  2. hibernate查询语句hql中的占位符?参数与命名参数:name设值方式搞混

    先贴出异常 Struts has detected an unhandled exception: Messages: Position beyond number of declared ordin ...

  3. perl回文数解析,比C容易多了

    #!/usr/bin/perl -w ; @array = split "", shift @ARGV; ..($#array+1)/2-1]; @array_2 = revers ...

  4. Window memcache 使用

    一.memcache配置 1. 下载memcache 32位系统 1.2.5版本:http://static.runoob.com/download/memcached-1.2.5-win32-bin ...

  5. sql 跨库查询备忘笔记

    select * from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 inse ...

  6. Entity Framework 连接低版本数据库

    使用EF6连接SQL2012生成的Edmx,分页时生成的查询语句使用了SQL 2012引入的新特性  OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY,结果在生产环境使用的数 ...

  7. [zz] Principal Components Analysis (PCA) 主成分分析

    我理解PCA应该分为2个过程:1.求出降维矩阵:2.利用得到的降维矩阵,对数据/特征做降维. 这里分成了两篇博客,来做总结. http://matlabdatamining.blogspot.com/ ...

  8. 在Ubuntu14.04系统POWER8服务器上搭建Docker Registry服务

    本文描述了如何在POWER8服务器上搭建一个本地化的Docker镜像仓库,主要涉及镜像制作,Docker Registry服务启动等.希望能够对在非X86服务器上搭建Docker仓库的同学提供参考. ...

  9. 【zz】MIT牛人解说数学体系

    作者:林达华 一.为什么要深入数学的世界 作为计算机的学生,我(原作者)没有任何企图要成为一个数学家.我学习数学的目 的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些. ...

  10. HTML input="file" 浏览时只显示指定文件类型 xls、xlsx、csv

    html input="file" 浏览时只显示指定文件类型 xls.xlsx.csv <input id="fileSelect" type=" ...