第十三周 程序阅读一
来源:互联网 发布:tostring方法的作用js 编辑:程序博客网 时间:2024/05/21 07:09
(1)虚函数:
问题及代码:
#include<iostream>using namespace std;class A {int a;public: A():a(5){} virtual void print()const { cout<<a;}};class B: public A { char b;public: B() { b='E'; } void print() const { cout<<b; }};void show(A &x) { x.print(); }int main(){ A d1,*p; B d2; p=&d2; d1.print(); d2.print(); p->print(); show(d1); show(d2); return 0;}
运行结果:
总结:在最后输出的E,是因为,实参是类B的对象,调用d1.print();函数,输出的即为E。
(2)虚析构函数:
问题及代码:
#include <iostream>using namespace std;class BASE{private: char c;public: BASE(char n):c(n) {} virtual ~BASE() { cout<<c; }};class DERIVED:public BASE{private: char c;public: DERIVED(char n):BASE(n+1),c(n) {} ~DERIVED(){ cout<<c; }};int main(){ DERIVED d('X'); return 0;}
运行结果:
(3)纯虚函数:
问题及代码:
#include <iostream>using namespace std;class Base{public: virtual void Who() =0;};class FirstDerived:public Base{public: void Who() { cout<<"F"; }};class SecondDerived:public Base{public: void Who() { cout<<"S"; }};int main(){ FirstDerived first_obj; SecondDerived second_obj; Base &bref=first_obj; bref.Who(); bref=second_obj; bref.Who(); Base *bp; bp=&first_obj; bp->Who(); bp=&second_obj; bp->Who(); return 0;}
运行结果:
总结:Base &bref=first_obj; bref.Who(); bref=second_obj; bref.Who();这四行代码中,输出的是FF,其实是不明白的,但是问了好多人还是没解决。引用不是和指针是一样的吗?书上说“在声明一个引用后,不能再使之作为另一变量的引用”这是不合法的,但是运行是没有错误的啊
搞不明白·
六月三号:今天贺老师亲自找我,给我讲了这个题,本来是想放弃了。因为看了老师发的视频后,自己还是不明白,小伙伴说,不用纠结,先放一放,所以上机课,也就没打算问,想放弃这个题了,但是贺老师竟然亲自过来问我会了吗?感觉挺不好意思的,老师都没有放弃我,我又有什么理由放弃。放弃这道题,加油吧,多问问题,不是什么丢人的事,因为就是学的不好,所以才要更谦虚的问啊!!
以下是对这道题的补充:代码:
#include <iostream>using namespace std;class Base{protected: char aa;public: Base(char a) { aa=a; } virtual void Who() =0; virtual void Where() =0;};class FirstDerived:public Base{private: char bb;public: FirstDerived(char a,char b):Base(a) { bb=b; } void Who() { cout<<"F"; } void Where(){cout<<bb<<aa;}};class SecondDerived:public Base{ private: char cc;public: SecondDerived(char a,char c):Base(a) { cc=c; } void Who() { cout<<"S"; } void Where(){cout<<cc<<aa;}};int main(){ FirstDerived first_obj('b','d'); SecondDerived second_obj('c','e'); Base &bref=first_obj; bref.Who(); bref.Where(); bref=second_obj; bref.Who(); bref.Where(); Base *bp; bp=&first_obj; bp->Who(); bp=&second_obj; bp->Who(); return 0;}
运行结果:
总结:引用数据改变,引用对象未改变。
0 0
- 第十三周阅读程序一
- 第十三周 程序阅读一
- 第十三周阅读程序一
- 第十三周阅读程序一
- 第十三周 程序阅读
- 第十三周 阅读程序
- 第十三周程序阅读
- 第十三周-阅读程序
- 第十三周-阅读程序
- 第十三周-阅读程序
- 第十三周--阅读程序
- 第十三周阅读程序
- 第十三周阅读程序二
- 第十三周阅读程序三
- 第十三周阅读程序四
- 第十三周阅读程序1
- 第十三周阅读程序2
- 第十三周 程序阅读二
- 普 通 变 牌 器【加威-信13535353835】普 通 变 牌 器
- HDU ACM 3790 最短路径问题
- 牌 九 最 新 高 科 技 的 监 控【加威-信13535353835】牌 九 最 新 高 科 技 的 监 控
- 黑马程序员——多态,内部类
- 要 几 打 几 的 色 子【加威-信13535353835】要 几 打 几 的 色 子
- 第十三周 程序阅读一
- DownloadManger的使用方法:二
- 色 子 的 遥 控【加威-信13535353835】色 子 的 遥 控
- 在xcode6 上创建Empty Application工程
- 扑 克 分 析 仪 软 件【加威-信13535353835】扑 克 分 析 仪 软 件
- 福 建 十 三 水 怎 么 玩【加威-信13535353835】福 建 十 三 水 怎 么 玩
- 一个CSS3滤镜Drop-shadow阴影效果
- Alamofire网络库进阶教程
- ajax之 表单序列化后提交