博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十六章 多态性(一)
阅读量:5281 次
发布时间:2019-06-14

本文共 2828 字,大约阅读时间需要 9 分钟。

//第一节的内容是多重继承,由于前面在继承那一章已经粗略地了解了多种继承,所以本节及后面几节主要是说明"为什么要使用多重继承"/*#include 
using namespace std;class father{public: void smart() { cout<<"父亲很聪明"<
>choice; switch(choice) { case 0: quit = true; break; case 1: pf = new father; pf->beautiful(); break; case 2: pf = new son; pf->beautiful(); pf->smart(); delete pf; break; default: cout<<"请输入从0到2之间的数字"<
using namespace std;class father{public: void smart() { cout<<"父亲很聪明"<
>choice; switch(choice) { case 0: quit = true; break; case 1: pf = new father; //pf->beautiful(); break; case 2: pf = new son; //pf->beautiful(); //father类已经没有beautiful()函数,所以这里不能访问 //只能用指针转换 dynamic_cast
(pf)->beautiful(); //因此我们必须将基类指针强制转换为子类指针,这里要用到一个方法--dynamic_cast //dynacic_cast的作用是对不同类之间的数据类型进转换,它可一个基类的指针转换成一个派生类的指针 pf->smart(); delete pf; break; default: cout<<"请输入从0到2之间的数字"<
using namespace std;class father{public: void smart() { cout<<"父亲很聪明"<
>choice; switch(choice) { case 0: quit = true; break; case 1: pf = new father; break; case 2: pm = new son; pm->beautiful(); delete pm; break; default: cout<<"请输入从0到2之间的数字"<
using namespace std;class Human{public: Human(){cout<<"构造Human"<
>choice; switch(choice) { case 0: quit = true; break; case 1: p = new father; p->beautiful(); delete p; break; case 2: p = new son; //这里产生了两义性,因为父亲和母亲类都是从人类来的,一分是从母类,一分是从父类 p->beautiful(); p->smart(); delete p; break; case 3: p = new mother; p->beautiful(); delete p; default: cout<<"请输入从0到2之间的数字"<
using namespace std;class Human{public: Human(){cout<<"构造Human"<
>choice; switch(choice) { case 0: quit = true; break; case 1: p = new father; p->beautiful(); p->smart(); delete p; break; case 2: p = new son; //这里产生了两义性,因为父亲和母亲类都是从人类来的,一分是从母类,一分是从父类 p->beautiful(); p->smart(); delete p; break; case 3: p = new mother; p->beautiful(); p->smart(); delete p; default: cout<<"请输入从0到2之间的数字"<
using namespace std;class Shape{public: virtual double area()=0;};//三角形class Trigon: public Shape{protected: double h, w;public: Trigon(double H, double W) { h = H; w = W; } double area() { return h * w / 2; };};//正方形class Square : public Trigon{public: Square(double H, double W):Trigon(H, W) { } double area(){return h*w;}};//圆class Circle: public Shape{protected: double radius;public: Circle(double r){radius = r;} double area(){ return radius * radius * 3.14; }};int main(){ Shape *p; int choice = 0; while(1) { bool quit = false; cout<<"(0)退出 (1)三角形 (2)正方形 (3)圆"<
>choice; switch(choice) { case 0: quit = true; break; case 1: p = new Trigon(5.0,6.0); cout<<"三角形的面积是:"<
area()<
area()<
area()<
0){ delete p; } if(quit == true){ break; } }; return 0;}*/

  

转载于:https://www.cnblogs.com/xiangxiaodong/archive/2012/07/24/2607485.html

你可能感兴趣的文章
NVME SSD vs SATA SSD(转)
查看>>
搜索实时个性化模型——基于FTRL和个性化推荐的搜索排序优化
查看>>
漫画解读“跨视图粒度计算”,了解有数分析利器
查看>>
【c++ primer读书笔记】【第3章】字符串、向量和数组
查看>>
ATL CAxWindow类创建问题一则
查看>>
【Android Developers Training】 31. 序言:共享简单数据
查看>>
【BZOJ】【2693】JZPTAB
查看>>
第八篇:ORM框架SQLAlchemy 了解知识
查看>>
JavaWeb学习笔记——过滤器
查看>>
Spring MVC学习笔记——完整的用户登录
查看>>
Spark学习笔记——安装和WordCount
查看>>
简单的弹出拖拽窗口(一)
查看>>
100.Same Tree(Swift待解)
查看>>
数据结构与算法之图
查看>>
python之路(五)-文件操作
查看>>
Android - 点击可以转动的自定义右下角浮动FABImageButton按钮
查看>>
Spring IOC的理解
查看>>
自动化测试框架学习之一 --- 为什么要进行自动化测试?
查看>>
QT Creator 快速入门教程 读书笔记(二)
查看>>
百度云?极光?个推?
查看>>