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

C++习题与解答(6)

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

{ cout<<\ } ~D()

{ cout<<\ private: A a; };

void main() {

D d(3,4,5,6); }

答: Constructor in A. 3 Constructor in B. 4 Constructor in C. 5 Constructor in A. 6 Constructor in D. 6 Destructor in D. Destructor in A. Destructor in C. Destructor in B. Destructor in A.

8.5 编程题

1.按下列要求编程:按照右边图中所示的各类的关系,编程输出它们的信息。各类中的数据成员如下:

Person: char *name(姓名),*dept(系别) Student: char *grade(年级) Teacher: char *lesson(授课名)

Student Teacher(在职读研): char *major(专业方向)

Person Student Teacher Student Teacher

答: 编程如下:

#include #include class Person { public: Person(char *s) { name=new char[strlen(s)+1]; strcpy(name,s); } void Print() { cout<<\姓名: \ } protected: char *name;

26

}; class Student:virtual public Person { public: Student(char *s,char *t):Person(s) { grad=new char[strlen(t)+1]; strcpy(grad,t); } void Print() { Person::Print(); cout<<\年级: \ } protected: char *grad; }; class Teacher:virtual public Person { public: Teacher(char *s,char *t):Person(s) { lesson=new char[strlen(t)+1]; strcpy(lesson,t); } void Print() { Person::Print(); cout<<\授课名: \ } protected: char *lesson; }; class StudentTeacher:public Student,public Teacher { public: StudentTeacher(char *p,char *q,char *r,char *s):Student(p,q),Teacher(p,r),Person(p) { Major=new char[strlen(s)+1]; strcpy(Major,s); } void Print() { Student::Print(); cout<<\专业方向:\ } protected: char *Major; };

void main() { Student stu(\马宁\级\

27

Teacher tea(\王新\高等代数\ StudentTeacher stutea(\刘力\级\数据结构\计算机软件\ stu.Print(); tea.Print(); stutea.Print();

}

2.设计一个程序,一行是信息,下一行画线,所画的线与信息行同长。例如,

C++ Programming

答: 编程如下:

#include #include class Line { public: Line(int i) { length=i; } void Show() { for(int i=0;i

28

void main() { MsgLine string1(\ string1.Show(); MsgLine string2(\ string2.Show(); }

8.6 简单回答下列问题

1. 在继承关系中,派生类中包含基类所有成员,基类是否也包含派生类的部分成员? 答:不包含。

2. 构造函数不能继承,派生类的构造函数中是否应包含直接基类的构造函数和所有间接

基类的构造函数?

签:派生类的构造函数中只包含直接基类的构造函数。

3. 派生类的析构函数中不包含直接基类的析构函数,对吗? 答:不对。

4. 派生类的对象可以给基类对象赋值吗?

答:一般情况下不可以,只有在公有继承的情况下可以。

5. 多重继承的二义性可以避免吗? 答:可以避免,通常使用类名限定。

第9章 多态性和虚函数

练习题9

9.1 判断题

√ 1.运算符重载是通过对已有的运算符重新定义操作功能来实现的,它是C++语言多态性的一种表现。

√ 2.所有的运算符都可以重载。

√ 3.运算符重载只可以是类的成员函数和友元函数,不可以是普通函数。

√ 4.运算符重载是通过函数来实现的,定义运算符重载函数时,函数名中要使用关键字operator。

√ 5.用于类对象的运算符中只有取地址运算符(&)有默认的可以使用。 √ 6.运算符重载后,优先级、结合性和操作数都是不变的。 √ 7.重载运算符的函数也可以设置默认参数。 √ 8.使用成员函数方法和使用友元函数的方法所定义的重载运算符函数的参数个数是不相同的。

√ 9.静态联编和动态联编都是在编译时进行的,二者的区别仅是前者对非虚函数,后者对虚函数。

√ 10.只要是成员函数就可以说明为虚函数,因为虚函数是一种成员函数。

√ 11.虚函数有继承性,基类中说明的虚函数只要在它的派生类中与它名字相同的,一定是虚函数。

√ 12.虚函数可以被类的对象调用,也可以被类的对象指针和对象引用调用。

29

√ 13.动态联编指的是在运行期间来选择不同类的虚函数。 √ 14.虚函数是实现动态联编的充分必要条件。

√ 15.含有纯虚函数的类称为抽象类,与抽象类相对应的是具体类。 √ 16.抽象类可以定义对象,不可以定义对象指针和对象引用。 √ 17.成员函数和构造函数调用虚函数都可以实现动态联编。

√ 18.析构函数可以说明为虚函数,而构造函数说明为虚函数没有意义。 √ 19.抽象类的派生类一定是具体类。

√ 20.一个抽象类中可以包含有多个纯虚函数,一个派生类中也可以包含多个虚函数。 9.2 单选题

1.下列运算符中,不可以重载的是( D )。 A.&& B.& C.[ ] D.?:

2.下列关于运算符重载的描述中,错误的是( B )。 A.运算符重载不改变优先级

B.运算符重载后,原来运算符操作不可再用 C.运算符重载不改变结合性

D.运算符重载函数的参数个数与重载方式有关

3.下列关键字中,用来说明虚函数的关键字是( C )。 A.inline B.operator C.virtual D.public 4.下列的成员函数中,纯虚函数是( A )。 A.virtual void f1() = 0 B.void f1() = 0; C.virtual void f1() {} D.virtual void f1() == 0; 5.含有一个或多个纯虚函数的类称为( A )。 A.抽象类 B.具体类 C.虚基类 D.派生类 6.下列关于虚函数的描述中,错误的是( C )。 A.虚函数是一个成员函数 B.虚函数具有继承性

C.静态成员函数可以说明为虚函数

D.在类的继承的层次结构中,虚函数是说明相同的函数 7.下列各种类中,不能定义对象的类是( B )。 A.派生类 B.抽象类 C.嵌套类 D.虚基类 8.下列关于抽象类的描述中,错误的是( D )。

A.抽象类中至少应该有一个纯虚函数 B.抽象类可以定义对象指针和对象引用 C.抽象类通常用作类族中最顶层的类 D.抽象类的派生类必定是具体类

9.一个类的层次结构中,定义有虚函数,并且都是公有继承,在下列情况下,实现动态联编的是( D )。

A.使用类的对象调用虚函数

B.使用类名限定调用虚函数,其格式如下:<类名>::<虚函数名> C.使用构造函数调用虚函数 D.使用成员函数调用虚函数

10.下列关于动态联编的描述中,错误的是( C )。

A.动态联编是函数联编的一种方式,它是在运行时来选择联编函数的 B.动态联编又可称为动态多态性,它是C++语言中多态性的一种重要形式 C.函数重载和运算符重载都属于动态联编

30

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

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