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

C++课后习题

来源:用户分享 时间:2025/7/30 0:26:59 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

博学谷——让IT教学更简单,让IT学习更有效

第三章答案

1、基类/父类 派生类/子类 派生类 基类 2、基类派生类 3、Base::fun();

4、编绎时多态 运行时多态 5、C 6、AD 7、B 8、D 9、对 10、错 11、对 12、对

13、凡是基类所能解决的问题,公有派生类都可以解决。在任何需要基类对象的地方都可以用公有派生类的对象来代替,这条规则称赋值兼容规则。它包括以下情况:

(1)派生类的对象可以赋值给基类的对象,这时是把派生类对象中从对应基类中继承来的成员赋值给基类对象。反过来不行,因为派生类的新成员无值可赋。

(2)可以将一个派生类的对象的地址赋给其基类的指针变量,但只能通过这个指针访问派生类中由基类继承来的成员,不能访问派生类中的新成员。同样也不能反过来做。

(3)派生类对象可以初始化基类的引用。引用是别名,但这个别名只能包含派生类对象中的由基类继承来的成员。 14、实现多台的两个必要条件 (1)基类中有虚函数。

(2)一个基类的指针或引用指向一个派生类的对象。

C++中的虚函数一般是通过虚函数表实现的。先建立虚函数表,将各函数地址放入虚函数表中,再通过对象实例的地址得到这张虚函数表,然后就可以遍历其中函数指针,并调用相应的函数。

15、内部类能够访问外部类的成员,为外部类扩展了功能和接口,但并没有增加外部类的public方法,能够很好地实现代码隐藏。 另外,由于内部类和外部类位于不同的名字空间中,因此能够消除多重继承中存在的二义性问题。 16、

#include using namespace std;

class shape //抽象类shape {

public: virtual void getarea() = 0; virtual void getperim() = 0; };

class rectangle :public shape //矩形类 {

博学谷——让IT教学更简单,让IT学习更有效 int a, b, c; double s, p; public: rectangle(int a1, int b1, int c1) //矩形类构造函数 { a = a1; b = b1; c = c1; } void getperim() //实现纯虚函数getperim() { p = a + b + c; cout << \周长 \ } void getarea() //实现纯虚函数getarea() { p = (a + b + c) / 2.0; s = sqrt(p*(p - a)*(p - b)*(p - c)); cout << \面积 \ } };

class circle :public shape //圆形类继承自抽象类shape { float r, s, p; public: circle(float r1) //圆形类的构造函数 { r = r1; } void getperim() //圆形类实现纯虚函数getperim() { p = 2 * r*3.1415926; cout << \周长 \ } void getarea() //圆形类实现纯虚函数getarea() { s = r*r*3.1415926; cout << \面积 \ } };

void show(shape *p) { p->getarea();

博学谷——让IT教学更简单,让IT学习更有效 p->getperim(); }

void main() { shape *p; //基类指针 rectangle a(3, 4, 5); //构造矩形对象 circle b(10); //构造圆形对象 p = &a; //基类指针指向矩形 show(p); p = &b; //基类指针指向圆形 show(p); system(\}

第四章题目

一、填空题

1、运算符重载的本质是,它也是C++的一种体现,为用户提供了一个直观的接口,调用运

算符操作自定义数据类型其实就是调用运算符函数。 2、运算符重载时其函数名由构成。成员函数重载双目运算符是,左操作数是,右操作数是。 3、重载之后的运算符不能改变其和,也不能改变其操作数的个数及语法结构。

4、如果是单目运算符重载为类的成员函数,则要分为前置与后置运算符,如果是前置运算符,则它的操作数是函数调用者,函数没有参数;如果是后置单目运算符,则函数要带一个,这个整型参数不起任何作用,只是用来区分前置与后置。 二、选择题

5、下列关于插入运算符”<<”的重载的描述中,错误的是()。 A、运算符函数的返回值类型是ostream B、重载的运算符必须定义为类的成员函数 C、运算符函数的第一个参数的类型是ostream D、运算符函数有两个参数

6、现需要对list类重载”==”运算符,以下函数声明正确的是() A、friend bool operator== (const Student& st1, const Student& st2); B、bool operator== (const Student& st1); C、friend list operator== (const Student& st1);

D、bool operator== (const Student& st1, const Student& st2);

7、在重载一个运算符时,其参数表中没有任何参数,则下列描述中正确的是() A、作为友元函数重载的一元运算符 B、作为成员函数重载的一元运算符 C、作为友元函数重载的二元运算符 D、作为成员函数重载的二元运算符

8、下列关于运算符重载的描述中,正确的是( ) A、所有运算符都可以重载

B、通过重载,可以使运算符应用于自定义的数据类型 C、通过重载,可以创造原来没有的运算符

博学谷——让IT教学更简单,让IT学习更有效

D、通过重载,可以改变运算的优先级 三、判断题

9、运算符重载可以创建新运算符。

10、C++中有5个运算符不可以重载:类属关系运算符“.”、成员指针运算符“*”、作用域

运算符“::”、sizeof运算符和三目运算符“?:”。 11、有4个运算符必须重载为类的成员函数:赋值(=)、下标([])、调用(())、成员访问

箭头(->)。 12、

四、简答题

13、请阅读下面的程序,分析程序是否能通过编绎,如果不能写出原因;如果能,写出运行结果。

#include using namespace std;

class Point { int x, y; public: Point(int x = 0, int y = 0) { this->x = x; this->y = y; cout << \ } Point & operator++() { x++; y++; cout << \ return *this; } Point operator++(int) { Point temp; temp = *this; ++(this->x); ++(this->y); cout << \ return temp; } friend ostream & operator<<(ostream &os, Point&p) { os << \ return os; }

搜索更多关于: C++课后习题 的文档
C++课后习题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c66asw8l3664mg6283wf0_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top