面向对象程序设计题库(C++) 联系客服

发布时间 : 星期一 文章面向对象程序设计题库(C++)更新完毕开始阅读bb8b5da4360cba1aa911da6e

45. 通常,拷贝构造函数的参数是 ( )

A. 某个对象名 B. 某个对象的成员名 C. 某个对象的引用名 D. 某个对象的指针名 46. 继承机制的作用是 ( )

A. 信息隐藏 B. 数据封装 C. 代码重用 D. 数据抽象 47. 类的析构函数的作用是 ( )

A.一般成员函数 B.类的初始化 C.对象的初始化 D.删除对象创建的所有对象 48. 类的析构函数是在 ( ) 调用的。

A. 类创建时 B. 创建对象时 C. 删除对象时 D. 不自动调用 49. 已知print ()函数是一个类无返回值的常成员函数,下列表示中正确的是( )。

A.void print()const B.const void print() C.void const print ; D.void print (const ); 50. 如果类 A 被说明成类 B 的友元,则 ( )

A. 类 A 的成员即类 B 的成员 B. 类 B 的成员即类 A 的成员

C. 类 A 的成员函数不得访问类 B 的成员 D. 类 B 不一定是类 A 的友元 51. 通过一个对象调用虚函数时,C++系统对该调用采用( )。

A.动态联编 B.静态联编 C.不确定是哪种联编 D.函数重载 52. 在公有继承的情况下,基类成员在派生类中的访问权限 ( )

A. 受限制 B. 保持不变 C. 受保护 D. 不受保护

53. 在C++中,当一个对象被创建后,它的每一个成员函数都含有一个系统自动生成的隐含的指针,称之为( )指针。

A.对象 B.派生 C基类 D.this 54. 假定 AB 为一个类,则执行 AB x ;语句时将自动调用该类的 ( )

A. 有参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值构造函数 55. C++ 语言建立类族是通过 ( )

A. 类的嵌套 B. 类的继承 C. 虚函数 D. 抽象类

二、判断题

1、C++中,数组下标从1开始。( 错 ) 2、C++允许对字符串进行整体操作。( )

3、break语句也可以用于if体内,它可退出if语句。( )

4、在说明语句 char a(‘A’),&b=a,*pa=&a;中,b的值与*pa的值相等。( ) 5、对象数组的元素可以是不同类的对象。( )

6、私有继承中,基类中所有成员对派生类的对象都是不可见的。( ) 7、类中所提供的成员函数可以直接访问私有成员。( ) 8、按照标识符的要求,下划线是不能组成正确标识符的。( ) 9、函数的默认参数没有顺序要求,可以随意定义。( )

10、在 C++ 语言中,”A”占两个字节,而 ’A’占一个字节。( ) 11、C++语言支持封装性和继承性,不支持多态性。[ 错 ]

第 5 页 共 25 页

12、关系运算符可以用来比较两个字符的大小,也可用来比较两个字符串的大小。)[ ] 13、字符串\的长度是5。[ ] 14、引用和指针都可作函数参数。[ ]

15、友元函数说明在类体内,它是一种成员函数。[ ] 16、友元类必须被说明为公有成员。[ ]

17、纯虚函数是在基类中说明的虚函数,它在该基类中没有定义具体的操作内容。[ ] 18、析构函数不能被继承。[ ]

19、运算符重载以后,其优先级和结合性都不能改变。[ ]

20、在C++中,函数名实际上是一个指针,它指向函数的入口。[ ] 21、构造函数可以被继承。( ) 22、析构函数不能被继承。( )

23、多继承情况下,派生类的构造函数的执行顺序取决于定义派生时所指定的各基类的顺序。( ) 24、解决多继承情况下出现的二义性的方法之一是使用成员名限定法。( ) 25、函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。( )

26、多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。( ) 27、对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。( )

28、对单目运算符重载为友元函数时,说明一个形参;重载为成员函数时,不能显式说明形参。( ) 29、重载运算符保持原运算符的优先级和结合性不变。( ) 30、构造函数说明为纯虚函数是没有意义的。( )

三、简答题

1. 简述C++的异常处理机制? 2.C++的预定义的流对象有哪些?

3. 试以客观世界为例,说明抽象、封装、继承性和多态性等概念。 4. 多继承的情况下为什么会产生二义性?如何消除二义性?

5. 试说明 void F(const T &t); 和 inf f() const; 中关键字 const 作用。 6.有如下程序

#include #include using namespace std; class B; class A{ friend B; public:

A(){ }

A(const A &a){

第 6 页 共 25 页

cout<<\

cout<<\

}

~A(){ cout<<\

}

};

class B: public A{ public: B(){ cout<<\

}

B(const A a){ cout<<\ }

};

void f(A &a){

cout<<\}

void ff(const B &b){

cout<<\ }

void ff(A a){}

int main() { A a; B bb=a; }

程序运行的结果是_________________________ 7.有如下程序

#include using namespace std; template class HisClass {

Type data; public:

第 7 页共 25 页

HisClass(Type a, Type b, Type c); Type getData();

};

template

HisClass::HisClass(Type a, Type b, Type c){ if(a>b&&a>c) data=a; else

if(b>c) data=b; else

data=c; }

template Type HisClass::getData() {

return data; }

int main() {

HisClass x1(3,4,5), x2(5,3,4), x3(4,5,3), x4(7,8,9),

x5(8,7,9);

cout<

程序运行的结果是_________________________

8. 以下程序在运行中出现致命错误,找出错误原因并修正。

#include #include

class sample{ private: char *string;

public:

sample(const char *s){

第 8 页共 25 页