04737_C++程序设计_第8章_多态性和虚函数
例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章_多态性和虚函数的更多相关文章
- ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 G ...
- ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区 1 用ArcMap制作地图 作为ArcGIS for Deskto ...
- ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...
- cc38b_demo_C++_异常_(2)txwtech在异常中使用虚函数-多态
//cc38b_demo,21days_C++_异常_(2)txwtech20200121在异常中使用虚函数-多态 //--异常层次结构//*异常的类-创建自己的异常类//*异常派生-就是继承//*异 ...
- sdut 6-2 多态性与虚函数
6-2 多态性与虚函数 nid=24#time" title="C.C++.go.haskell.lua.pascal Time Limit1000ms Memory Limit ...
- C++学习之路—多态性与虚函数(二)纯虚函数与抽象类
(根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 1 纯虚函数 在前面的博客中已经提到:有时 ...
- C++学习之路—多态性与虚函数(一)利用虚函数实现动态多态性
(根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 多态性是面向对象程序设计的一个重要特征.顾名思义 ...
- C++之多态性与虚函数
面向对象程序设计中的多态性是指向不同的对象发送同一个消息,不同对象对应同一消息产生不同行为.在程序中消息就是调用函数,不同的行为就是指不同的实现方法,即执行不同的函数体.也可以这样说就是实现了&quo ...
- C++学习7-面向对象编程基础(多态性与虚函数、 IO文件流操作)
多态 多态性是指对不同类的对象发出相同的消息将返回不同的行为,消息主要是指类的成员函数的调用,不同的行为是指不同的实现: 函数重载 函数重载是多态性的一种简单形式,它是指允许在相同的作用域内,相同的函 ...
- [转]C++之多态性与虚函数
面向对象程序设计中的多态性是指向不同的对象发送同一个消息,不同对象对应同一消息产生不同行为.在程序中消息就是调用函数,不同的行为就是指不同的实现方法,即执行不同的函数体.也可以这样说就是实现了“一个接 ...
随机推荐
- CSS自学笔记(8):CSS拓展(一)
CSS元素对齐 可以使用margin属性类进行元素的水平对齐 水平对齐块元素时,可以将块元素的margin属性定义为"auto",这里需要注意的是,应该要声明!DOCTYPE,否则 ...
- 【Chromium中文文档】Chrome/Chromium沙箱 - 安全架构设计
沙箱 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Sandbox.ht ...
- linux----suid\sgid
1.suid和sgid 都是针对二进制程序来说了,bash脚本不在它的作用范围. 2.如果一个二进制文件设置有suid,那么在userA用户执行它时,会以文件所属用户的身份来执行.sgid同理: 3. ...
- [问题解决] LaTex Error:Unknown graphics extension:.eps
错误:编译的时候显示:“!LaTex Error:Unknown graphics extension:.eps” 发生场景:Latex写论文 解决方案: latex eps.texdvi2ps ep ...
- 论山寨手机与Android 【14】3G SmartPhone时代的MTK
分析了SmartPhone的里里外外以后,现在我们可以分析MTK的机遇和挑战了.MTK面临的外部环境在发生变化,变化有两条,一是移动网络从2G演变到3G,二是手机由FeaturePhone演化到Sma ...
- Linux运维不可不知的性能监控和调试工具
Linux运维不可不知的性能监控和调试工具 1 nagios Nagios是一个开源监控解决方案,我觉得他可以监控一切 ,可以看一下我以前的文章:NAGIOS 2 ps #用来查看程序的运行情况 ps ...
- <Win32_20>纯c语言版的打飞机游戏出炉了^_^
经过昨天的苦战,终于完成了纯C版的打飞机游戏——使用微信打飞机游戏的素材,不过玩法有些不同,下面会有详述 一.概述游戏的玩法.实现效果 1. 游戏第一步,简单判断一下,给你一个准备的时间: 2.选择& ...
- JQuery UI 精品UI推荐
1.JQuery MiniUi http://www.miniui.com/
- wx
wx The classes in this module are the most commonly used classes for wxPython, which is why they hav ...
- css的绝对定位
假设绝对定位的元素的id为absoluteDiv. 当包含absoluteDiv的块中没有设置position:relative时, absoluteDiv会相对于浏览器(window.top)定位. ...