一、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. 【ZOJ1003】Crashing Balloon(DFS)

    Crashing Balloon Time Limit: 2 Seconds      Memory Limit: 65536 KB On every June 1st, the Children's ...

  2. [转]DB2 load参数

    本文持续更新,LOAD如何提高parallelism.LOAD SHRLEVEL CHANGE的性能提高. =========================== Every once in a wh ...

  3. python——socket网络编程

    一.OSI七层模型

  4. web编程

    展示层 html/css/javascript/jquery/jquery easyUI/ajax bootstrap web层 varnish/haproxy/squid----lvs/keepal ...

  5. 5G扫盲

    打开手机,连接wifi,如果想要下载一部自己喜欢的高清电影,一般需要半小时左右的时间.5G时代,你可能花费不到1分钟就能完成这些操作.更快的网速.更多的应用意味着更广阔的市场空间,也意味着更激烈的市场 ...

  6. ecstore-lnmp环境下crontab不执行原因

    因为lnmp.org默认禁止了proc_open函数,需要开启 开启后 lnmp restart ==== contab还是用crontab -e好,有些用www用户的似乎执行不了

  7. C++的隐式类型转换与转换操作符

    C++标准允许隐式类型转换,即对特定的类,在特定条件下,某些参数或变量将隐形转换成类对象(创建临时对象).如果这种转换代价很大(调用类的构造函数),隐式转换将影响性能.隐式转换的发生条件:函数调用中, ...

  8. Join two DataTables in C#

    var query = (from x in a.AsEnumerable() join y in b.AsEnumerable() on x.Field<int>("col1& ...

  9. opengl入门学习

    OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...

  10. OAF_开发系列23_实现OAF数据格式CSS和CSS库(案例)

    20150716 Created By BaoXinjian