C++习题讲解(ch06)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

B.使用对象通过指向成员的指针表示成员的运算符 C.用来表示指向对象指针的成员的运算符 D.用来表示对象的成员的运算符 3.已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的 指针,采用(B)是正确的. A.P=f1 B.P=A::f1 C. P=A::f1() D. P=f1() 正确格式应该是 <指向函数的指针名>=<类名>::<函数名> 4.已知:p是一个指向类A数据成员m的指针,A1是类的 一个对象.如果要给m赋值为5,(C)是正确的. A.A1.P=5 B.A1->p=5 C.A1.*p=5 D.*A1.p=5 正确赋值格式应该是 <对象名>.*<指针名>=数值
运算符可以重载为类的成员函数和友员函数. 8.关于虚函数的描述中,(C)是正确的 A.虚函数是一个static类型的成员函数 B.虚函数是一个非成员函数 C.基类中说明了虚函数后,派生类中可不必将其对应的函 数说明为虚函数 D.派生类的虚函数与基类的虚函数具有不同的参数个数 和类型 虚函数是成员函数但是是非static的,派生类中的虚函数与基 类的虚函数具有相同的参数个数,对应的参数类型相同. 10.下列描述中,(D)是抽象类的特性
5.已知类A中一个成员函数说明如下:void set(A&a),其 中A&a的含义是(C) A.指向类A的指针为a B.a将的地址值赋给变量 C. a是类A的对象引用,用来作为set()的参数 D.变量A与a按位相与作为函数set()的参数 7.下列定义中(B)是定义指向数组的指针P. A.int *p[5] B. int (*p)[5]C. (int *)p[5]D. int *p[] 指向数组的指针的定义格式如下: <类型说明符>(*<指针名>)[<大小>] 8.下列说明中const char *ptr,ptr应该是(C) A.指向字符常量的指针B.指向字符的常量指针
9.派生类中至少包含了它的基类的所有成员,在这些成员 中可能有的不可访问.正确 10.构造函数可以被继承.错误 构造函数是不能被继承的,派生类中由基类说明的数据成员 应该由基类中的构造函数进行初始化. 13.只要类M继承了类N,就可以说类M是类N的子类. 错误. 并不是错有的继承都可以成其子类关系,公有继承可以实现 子类型化. 14.如果A类型是B类型的子类型,则A类型必然适应于 B类型.正确 15.多继承情况下,派生类的构造函数中基类构造函数的
5.对象数组的元素是不同类的对象.错误 定义对象数组的时候,前面要加类名,所以对象数组的元素 是属于同一个类的 7.指向对象数组的指针不一定必须指向数组首元素.正确 8.一维对象指针数组的每个元素应该是某个类的对象的地 址值.正确 10.一个能够更新的变量使用在一个不能被更新的环境中 是不破坏类型保护的,反之亦然.错误 Const用于变量时是可以改变Const的属性的 11.一个类的构造函数可以不包含对其子对象的初始化. 错误 类的构造函数的功能就是用给定的值对对象进行初始化
二.判断题 4.在公有继承中,基类的公有成员和私有成员在派生类 中都是可见的.错误 其中私有成员是不可见的. 7.在私有继承中,基类中所有成员对派生类的对象都是不 可见的.正确. 基类的所有成员都不能被派生类多访问. 8.在保护继承中,对于派生类的访问同于公有继承,而对 于派生类的对象的访问同于私有继承.正确 保护继承的特点是:基类的所有公有成员和保护成员都作为 派生类的保护成员,并且只能被它的派生类成员函数或友员 访问,而不能为派生类的对象访问
类的子类 6.关于多继承二义性的描述中错误的是(C) A.一个派生类的两个基类中都有某个同名成员,在派生类 中对这个成员的访问可能出现二义性 B.解决二义性的最常用方法是用成员名的限定法 C.基类和派生类中同时出现的同名函数,也存在二义问题 D.一个派生类是从两个基类派生来的,而这两个基类又有 一个公共的基类,对该基类成员进行访问时,也可能出现二 义性问题. 两点:派生类的多个基类中调用其同名成员时可能出现二义 性,派生类有共同基类时访问公共基类成员可能出现二义性, 解决的方法一般是成员名限定法
1.输出结果是 (1,2) 5,6 (6,9) 2.输出结果是 (1,2) (6,9) 5,6 (6,9) 3.输出结果是 (12,22,30,40) 4.输出结果是
D::display() Pri1=4, Pri2=5 Pri4=6 Pri2=7 D::display() Pri1=12, Pri2=9 Pri4=7 Pri2=8 5.输出结果是 D::display() Pri1=1, Pri2=4 Pri4=6
ห้องสมุดไป่ตู้
D.构造函数重载将会给初始化带来多种方式 重载函数是允许使用默认参数的. 5.下列关于运算符重载的描述中正确的是(D) A.运算符重载可以改变操作数的个数 B.运算符重载可以改变优先级 C.运算符重载可以改变结合性 D.运算符重载不可以改变语法结构 重载运算符,不改变原运算符的优先级和结合性,也不可以 改变操作数个数和语法结构 6.运算符重载函数是(AB) A.成员函数 B.友员函数 C.内联函数 D.带默认参数的函数
二.判断题 1.指向对象的指针和指向类的成员函数的指针在表示形式 上是不相同的.正确 指向类的成员函数的指针的表示形式如下 <类型说明符>(<类名>::*<指针名>)(<参数表>) 指向对象的指针表示形式如下 <类名>*<指针名>=&<对象名> 3.指向对象的指针与对象都可以作为函数参数,但是使用 前者比后者好些.正确 使用前者可以实现传址调用,还不进行对象副本的复制,提 高运行效率. 4.对象引用作为函数参数比用对象指针更方便.正确 因为对象引用比对象指针更简单更直接
A.可以说明虚函数 B.可以进行构造函数重载 C.可以定义友员函数 D.不能说明对象 抽象类不能用来定义对象,可以定义对象指针和对象引用 二.判断题 1.函数的参数个数和类型相同,只是返回值不同,这不是 重载.正确 3.多数运算符可以重载,个别运算符不能重载,运算符重 载是通过函数定义实现的.正确 5.对单目运算符重载为友员函数时,说明一个形参;重载 为成员函数时,不能显式说明形参.正确 重载为成员函数时,不能再显式说明形参,重载为友员函数 时,有一个参数
C++习题讲解
第六章 类和对象(二)
一.选择题
1.已知一个类A,(C)是指向类A 成员函数的指针。假设类 有三个成员函数void f1(int),void f2(int)和int a 。 A. A *P B. int A::*pc=&A::a C. Void A::*pa D. A*pp 指向成员函数的指针格式如下: <类型说明符>(<类名>::*<指针名>)(<参数表>) 其中的类型说明符是和成员函数的返回值类型是相同的。 2.运算符->*的功能是(A) A.使用对象指针通过指向成员的指针表示成员的运算符
6.8+0i 5.6+7.9i Constructor:real=1.2,image=3.4 Constructor:real=5,image=0 Default constructor called. 1.2+3.4i 5+0i 0+0i 6.输出结果是 18.2 19.2 20.2 21.2 22.2 23.2 24.2 25.2 26.2 27.2
Pri2=7 D::display() Pri1=9, Pri2=8 Pri4=7 Pri2=8
第8章 多态性和虚函数
一.选择题 2.下列函数中(C)是不能重载的 A.成员函数 B.非成员函数 C.析构函数 D.构造函数 构造函数和成员函数都可以重载,非成员函数也可以重载, 只有析构函数不可以重载 3.下列重载函数的描述中,(A)是错误的. A.重载函数中不允许使用默认参数 B.重载函数中编译系统根据参数表进行选择 C.不要使用重载函数来描述毫不相干的函数
Destructor called. Constructor2 called. Destructor called. X=0,y=0 X=5,y=0 X=2,y=3 Destructor called. Destructor called. Destructor called. 3.输出结果是 Constructor called.0 Constructor called.5
三.分析程序结果 1.输出结果是 starting: default constructor called. default constructor called. default constructor called. Ending1: Starting2: Constructor:a=5,b=6 Constructor:a=7,b=8 Constructor:a=9,b=10 Ending 2:
第七章 继承性和派生类
一.选择题
5.下列关于赋值兼容规则的描述中错误的是(B) A.赋值兼容规则在子类型情况下才可使用 B.公有继承下,派生类对象不可给基类对象赋值 C.公有继承下,派生类对象可给基类对象引用初始化 D.公有继承下,派生类对象的地址值可以赋给基类的对象 指针 规则是派生类对象可以赋值给基类的对象,派生类对象的地 址值可以赋给基类的对象指针,派生类对象可以用来给基类 对象引用进行初始化,前提是在公有继承条件下派生类是基
7.虚函数用virtuel关键字说明成员函数.正确 8.构造函数说明为虚函数没有意义.正确 虚函数是通过引用和指针完成动态绑定,这样构造函数是不能 被调用的 9.抽象类是指一些没有说明对象的类.错误 抽象类是不能用来说明对象的,但是没有说明对象的类,不 能称其为抽象类 三.分析程序结果 1.输出结果是 B::show ()called.158 D::show()called.208 2.输出结果是 D::virfun() called.
C.指向字符串常量的指针D.指向字符串的常量指针 常量指针还分两种,其一是指向的地址值是常量,另一种 指向的值是常量. 9.已知print()函数是一个类的常成员函数,它无返回值, 下列表达式中正确的是(A) A.void print()const B.const void print() C. void constprint() D.void print(const) 常成员函数的定义格式如下: <类型说明符><函数名>(<参数表>)const 12.具有类型转换功能的构造函数,应该是(B) A.不带参数的构造函数B.带有一个参数的构造函数 C.带有两个以上参数的构造函数D.默认构造函数 具有类型转换功能的构造函数只有一个参数
执行顺序取决于定义派生类时所指定的各基类的顺序.正确 派生类构造函数执行顺序是先执行所有基类的构造函数,在 执行派生类本身的构造函数.处于同一层的各基类构造函数 的执行顺序取决于定义派生类时指定的各基类顺序. 16.单继承情况下,派生类中对基类成员的访问也会出现 二义性.错误 单继承中对基类成员的访问不会出现二义性. 18.虚基类可以解决多继承中公共基类在派生类中只产生 一个基类子对象的问题.正确 引进虚基类后,派生类中的对象中只存在一个虚基类的 对象. 三.分析程序结果
Destructor called.5 5 Destructor called.5 4.输出结果是 Destructor called.5 5 Destructor called.5 5.输出结果是 Default constructor called. Constructor:real=6.8,image=0 Constructor:real=5.6,image=7.9 0+0i
Destructor called. a=9,b=10 Destructor called. a=7,b=8 Destructor called. a=5,b=6 Destructor called. a=3,b=4 Destructor called. a=1,b=2 2.输出结果是 Default constructor called. Default constructor called. Default constructor called. Default constructor called. Destructor called. Constructor1 called.
相关文档
最新文档