77范文网 - 专业文章范例文档资料分享平台

C++OOP复习题-本部(to学生)(5)

来源:网络收集 时间:2019-01-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

A(int a):x(a){ cout<<\ int f(){ return ++x; }

~A(){cout<<\private: int x; };

class B:public virtual A{ private: int y; A Aobj; public:

B(int a,int b,int c):A(a),y(c),Aobj(c){ cout<<\ int f(){ A::f(); Aobj.f(); return ++y; }

void display(){ cout<

~B(){cout<<\ };

class C:public B{ public:

C(int a,int b,int c):B(a,b,c),A(0){ cout<<\};

class D:public C,public virtual A{ public:

D(int a,int b,int c):C(a,b,c),A(c){ cout<<\ ~D(){cout<<\};

void main(){ D d(7,8,9); d.f();

d.display(); } 答:

从上到下A constructor...9 依次为: A constructor...9

B constructor...9 C constructor... D constructor...

12 12 11 destructor D....

destructor B... destructor A... destructor A...

4.5. 第5章 多态性(P156~157)

1、 请阅读程序,根据虚函数的特性,按顺序写出程序的运行结果。(P156,第4

(1)题,ex5-4-1.cpp) #include using namespace std; class Base{ protected: int n; public:

Base(int m){ n=m++; }

virtual void g1(){ cout<<\ g4(); } virtual void g2(){ cout<<\ virtual void g3(){ cout<<\g4(); } virtual void g4(){ cout<<\} };

class Derived:public Base{ //公有继承 int j; public:

Derived(int n1,int n2):Base(n1){ j=n2; }

void g1(){ cout<<\g2(); } void g3(){ cout<<\g4(); } };

void main(){

Derived Dobj(1,0); Base Bobj=Dobj; Bobj.g1();

cout<<\ Base *bp=&Dobj; bp->g1();

cout<<\ Base &bobj2=Dobj; bobj2.g1();

cout<<\ Dobj.g1(); } 答:

从上到下Base::g1()...1 依次为: Base::g4()...2

------------------

Deri::g1()...2 Base::g2()...3 Deri::g2()...4 Base::g4()...5 ------------------ Deri::g1()...6 Base::g2()...7 Deri::g2()...8 Base::g4()...9 ------------------ Deri::g1()...10 Base::g2()...11 Deri::g2()...12 Base::g4()...13

2、 请阅读程序,根据虚函数和纯虚函数的定义与特性,按顺序写出程序的运行

结果。(P156,第4(2)题,ex5-4-2.cpp) #include class Shape{ public:

virtual double area(){ return 0; } virtual void print()=0; };

class Circle:public Shape{ protected: double r; public:

Circle(double x):r(x){ }

double area(){ return 3.14*r*r; } //(1) void print(){ cout<<\//(2) };

class Cylinder:public Circle{ double h; public:

Cylinder(double r,double x):Circle(r),h(x){ }

double area(){ return 2*3.14*r*r+2*3.14*h; } //(3) };

void shapeArea(Shape &s){ cout<print(); } //(5) void main(){ Shape *s[3];

s[0]=&Circle(10);

s[1]=&Cylinder(20,100); for(int i=0; i<2; i++){

shapeArea(*s[i]); shapePrint(s[i]); } } 答: 说明:

i=0时,(4)-(1)-(5)-(2)-(1); i=1时,(4)-(3)-(5)-(2)-(3); 从上到下314

依次为: Circle : r=10 area=314

3140

Circle : r=20 area=3140

3、 请阅读程序,根据类型信息和类型转换的原理,按顺序写出程序的运行结果。

(P157,第4(3)题,ex5-4-3.cpp)——不要求! #include using namespace std; class A{ public:

void virtual f(){cout<<\};

class B:public A{ public:

void f(){cout<<\ void fb(){cout<<\};

class C:public A{ public:

void f(){cout<<\

void fc(){cout<<\};

void f(A *p){ p->f();

if (typeid(*p)==typeid(B)) { B *bp=dynamic_cast(p); bp->fb(); }

if (typeid(*p)==typeid(C)){ C *bc=dynamic_cast(p); bc->fc(); } }

void main(){

A *pa; B b; C c;

pa=&b; f(pa); pa=&c; f(pa); } 答:

从上到下f() in class B

依次为: normal function fb

f() in class C

normal function fc

4.6. 第6章 运算符重载(P183~185)

1、 请阅读程序,根据友元函数运算符重载的定义,按顺序写出程序的运行结果。

(P183,第5(1)题,ex6-5-1.cpp) #include class ABC{ int a,b,c; public:

ABC(int x,int y,int z):a(x),b(y),c(z){ }

friend ostream &operator<<(ostream &out,ABC& f); };

ostream &operator<<(ostream &out,ABC& f){

out<<\ return out; }

void main(){

ABC obj(10,20,30); cout<

从上到下a=10 依次为: b=20

c=30

2、 请阅读程序,根据对象赋值及构造的特性,按顺序写出程序的运行结果。

(P184,第5(2)题,ex6-5-2.cpp)——不要求! #include #include class X{ private: char *s; public:

X(char *b){ s=new char[sizeof(b)+1]; strcpy(s,b);

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++OOP复习题-本部(to学生)(5)在线全文阅读。

C++OOP复习题-本部(to学生)(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/443255.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: