5.2向上类型转换【C++】
来源:互联网 发布:淘宝网男休闲牛仔裤 编辑:程序博客网 时间:2024/06/01 22:12
5.2向上类型转换
根据赋值兼容原则,可以使用派生类的对象代替基类对象。向上类型转换就是把一个派生类的对象作为基类的对象来使用。
下面通过一个程序来加深对它的理解
#include <iostream>using namespace std;class Point{public: Point(double a = 0, double b = 0) { x = a; y = b; } double Area( ) { cout << "Call Point’s Area function." << endl; return 0.0; }protected: double x, y;// 点的坐标值};class Rectangle: public Point{public: Rectangle(double a = 0, double b = 0, double c = 0, double d = 0): Point(a, b) { x1 = c; y1 = d; } double Area( ) { cout << "Call Rectangle’s Area function." << endl; return (x - x1)*(y - y1); }protected: double x1, y1;//长方形右下角点的坐标值,基类中x, y为左上角坐标点的值};class Circle: public Point{public: Circle(double a = 0, double b = 0, double c = 0): Point(a, b){ r = c; } double Area( ) { cout << "Call Circle’s Area function." << endl; return 3.14*r*r; }protected: double r; //圆半径,基类中x, y为圆心坐标点的坐标值};double CalcArea(Point &ref){ return ( ref. Area( ) ); } int main( ){Point p(0, 0); Rectangle r(0, 0, 1, 1); Circle c(0, 0, 1); cout << CalcArea(p) << endl; cout << CalcArea(r) << endl; cout << CalcArea(c) << endl; return 0;}
从运行结果来看,3调用的都是point::area(),这不是我们想要的结果。为了实现灵活的调用,我们需要知道“绑定”这个概念。
阅读全文
0 0
- 5.2向上类型转换【C++】
- 向上类型转换
- 向上向下类型转换
- 向上类型转换、向下类型转换
- 向上类型转换与向下类型转换
- 向上类型转换,向下类型转换
- 向上类型转换、向下类型转换
- C++ 向上类型转换、向下类型转换 .
- 向上类型转换和向下类型转换
- 继承中的向上类型转换
- C++的向上类型转换
- C++的向上类型转换
- 向上强制类型转换(Object slicing)
- C++异常处理catch向上类型转换。
- C++类型向上转换的一种形式
- java 向上与向下类型转换
- java 向上与向下类型转换
- C++的继承关于向上类型转换
- UEditor上传图片到fastDFS 自定义请求地址
- 深度学习笔记一:BP神经网络的介绍和Python代码实现(1)
- 剑指offer 二叉搜索树的后序遍历
- 简单介绍postgresql的关闭模式
- Rxjs系列教程目录
- 5.2向上类型转换【C++】
- 我的架构之路 — 配置中心(三)— 动态更新配置
- 看看咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔咔卡
- MySQL一张表最多能存多少条记录?
- 决策树 算法
- eclipse中文乱码问题解决方案
- Chrome 控制台不完全指南
- mysql负载均衡
- TabLayout使用的时候会遇到的一个bug