例8.1

分析下面程序的输出结果。

例8.2

分别使用指针和引用的display函数。

 #include <iostream>

 using namespace std;

 const double PI = 3.14159;

 class Point
{
private:
double x, y;
public:
Point(double i, double j)
{
x = i;
y = j;
}
virtual double area()
{
return ;
}
}; class Circle :public Point
{
private:
double radius;
public:
Circle(double a, double b, double r) :Point(a, b)
{
radius = r;
}
double area()
{
return PI*radius*radius;
}
}; void display(Point *p)
{
cout << p->area() << endl;
} void display(Point&a)
{
cout << a.area() << endl;
} void main()
{
Point a(1.5, 6.7);
Circle c(1.5, 6.7, 2.5); Point *p = &c;
Point &rc = c; display(a);
display(p);
display(rc); system("pause");
};

例8.3

在构造函数和析构函数中调用虚函数。

 #include <iostream>

 using namespace std;

 class A
{
public:
A()
{ }
virtual void func()
{
cout << "Constructing A" << endl;
}
~A()
{ }
virtual void fund()
{
cout << "Destructor A" << endl;
}
}; class B :public A
{
public:
B()
{
func();
}
void fun()
{
cout << "Come here and go...";
func();
}
~B()
{
fund();
}
}; class C :public B
{
public:
C()
{ }
void func()
{
cout << "Class C" << endl;
}
~C()
{
fund();
}
void fund()
{
cout << "Destructor C" << endl;
}
}; void main()
{
C c;
c.fun(); system("pause");
};

例8.5

多重继承使用虚函数。

 #include <iostream>

 using namespace std;

 class A
{
public:
virtual void f()
{
cout << "Call A" << endl;
}
}; class B
{
public:
virtual void f()
{
cout << "Call B" << endl;//必须使用virtual声明
}
}; class C :public A, public B
{
public:
void f()//可以省略关键字virtual
{
cout << "Call C" << endl;
}
}; void main()
{
A *pa;
B *pb;
C *pc, c; pa = &c;
pb = &c;
pc = &c; pa->f();//输出Call C
pb->f();//输出Call C
pc->f();//输出Call C system("pause");
};

04737_C++程序设计_第8章_多态性和虚函数的更多相关文章

  1. ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 G ...

  2. ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区 1 用ArcMap制作地图 作为ArcGIS for Deskto ...

  3. ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...

  4. cc38b_demo_C++_异常_(2)txwtech在异常中使用虚函数-多态

    //cc38b_demo,21days_C++_异常_(2)txwtech20200121在异常中使用虚函数-多态 //--异常层次结构//*异常的类-创建自己的异常类//*异常派生-就是继承//*异 ...

  5. sdut 6-2 多态性与虚函数

    6-2 多态性与虚函数 nid=24#time" title="C.C++.go.haskell.lua.pascal Time Limit1000ms Memory Limit ...

  6. C++学习之路—多态性与虚函数(二)纯虚函数与抽象类

    (根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 1    纯虚函数 在前面的博客中已经提到:有时 ...

  7. C++学习之路—多态性与虚函数(一)利用虚函数实现动态多态性

    (根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 多态性是面向对象程序设计的一个重要特征.顾名思义 ...

  8. C++之多态性与虚函数

    面向对象程序设计中的多态性是指向不同的对象发送同一个消息,不同对象对应同一消息产生不同行为.在程序中消息就是调用函数,不同的行为就是指不同的实现方法,即执行不同的函数体.也可以这样说就是实现了&quo ...

  9. C++学习7-面向对象编程基础(多态性与虚函数、 IO文件流操作)

    多态 多态性是指对不同类的对象发出相同的消息将返回不同的行为,消息主要是指类的成员函数的调用,不同的行为是指不同的实现: 函数重载 函数重载是多态性的一种简单形式,它是指允许在相同的作用域内,相同的函 ...

  10. [转]C++之多态性与虚函数

    面向对象程序设计中的多态性是指向不同的对象发送同一个消息,不同对象对应同一消息产生不同行为.在程序中消息就是调用函数,不同的行为就是指不同的实现方法,即执行不同的函数体.也可以这样说就是实现了“一个接 ...

随机推荐

  1. 1016. 部分A+B

    /* * Main.c * 1016. 部分A+B * Created on: 2014年8月30日 * Author: Boomkeeper *******测试通过********* */ #inc ...

  2. Oracle EBS-SQL (PO-4):检查采购订单明细.sql

    SELECT PHA.SEGMENT1                  订单号, pha.approved_flag           批准状态, pha.closed_code        订 ...

  3. 又优化了一下 Android ListView 异步加载图片

    写这篇文章并不是教大家怎么样用listview异步加载图片,因为这样的文章在网上已经有很多了,比如这位仁兄写的就很好: http://www.iteye.com/topic/685986 我也是因为看 ...

  4. [置顶] 实习总结3-job hunting(西安工作)

    开始整理关于西安top level的IT企业的工作从去年开始实习就慢慢展开了,到了北京之后一直关注的比较密切,因此前前后后也整理了很多.本来不打算那么急着写这一篇的,但是在因为在公司呆着,对于西安的一 ...

  5. docker 容器扩盘

    docker:/root/sbin# cat add_fs.sh #!/bin/bash #This script is dynamic modify docker container disk #A ...

  6. 开源语音识别系统 Simon

    http://www.lupaworld.com/proj.php?mod=view&cid=&id=824 语音识别系统 Simon:Simon 是一个开源的语音识别系统,它不仅可以 ...

  7. 实现在ios文件读写

    文件都是用来读写数据的,可是哪里都会有潜规则,ios里面读写数据的潜规则你知不知道,你知道不知道!!! 你有没有觉得NSUserDefaults和NSBundle,plist这些玩意阴魂不散,有时候搞 ...

  8. oauth2认证

    using System; using System.Collections.Generic; using System.Security.Cryptography; using System.Con ...

  9. andengine游戏引擎总结进阶篇2

    本篇包括瓦片地图,物理系统, 1瓦片地图 超级玛丽,冒险岛,魂斗罗等游戏主场景都有瓦片地图画成,它的作用可见一斑,它可以用tiled Qt软件画成,在辅助篇中讲讲解tiled Qt软件的使用 1)加载 ...

  10. ftp 解决不能上传问题

    有人建议整个关掉SELinux并且重启,于是我去/etc/selinux/config里面把SELinux给disable了.重启之后,发现可以在/home/sam/test这个文件夹上传了!