南开21秋学期《面向对象程序设计》在线作业[正确答案]单选题答案
21秋学期(1709、1803、1809、1903、1909、2003、2009、2103)《面向对象程序设计》在线作业
试卷总分:100 得分:100
一、单选题 (共 35 道试题,共 70 分)
1.撤消对象时,系统自动调用( )函数。
A.成员函数
B.构造函数
C.析构函数
D.普通函数
正确选项:--------
2.在一个类中,可以对一个操作符进行()重载。
A.1种
B.2种
C.3种
D.多种
3.下面函数原型声明中,( )声明了fun为纯虚函数。
A.void fun()=0;
正确选项:--------
B.virtual void fun()=0;
C.virtual void fun();
D.virtual void fun(){};
正确选项:--------
4.对于任意一个类,析构函数的个数最多为( )。
A.0
B.1
C.2
D.3
5.下列表示引用的方法中,( )是正确的。 已知:int k=1000;
A.int &x=k;
B.char &y;
C.int &z=1000;
D.float &t=&k;
6.抽象类的作用主要是()。
A.直接用作基类
B.直接用作指针
C.引用的基类型
D.包括以上各项
7.下面关于构造函数和析构函数的描述,错误的是()。
A.析构函数中调用虚函数采用静态联编
B.对虚析构函数的调用可以采用动态联编
C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数
D.构造函数可以声明为虚函数
正确选项:--------
8.由于数据隐藏的需要,静态数据成员通常被说明为( )。
A.私有的
B.公有的
C.保护的
D.不可访问的
正确选项:--------
9.下列关于赋值运算符重载的说法中正确的是()。
A.返回值一般是以引用方式返回的对象,而函数体中总是用语句“return *this;”返回this指针所指向的对象
正确选项:--------
B.赋值运算符只能以非成员函数的方式重载
C.赋值运算符既可以以成员函数的方式重载,又可以以非成员函数的方式重载
D.以上均不正确
10.对于类定义 class A{ public: virtual void funcl(){} void func2(){} }; class B:public A{ public: void func1(){cout<<"class B func1"<<endl;} virtual void func2(){cout<<"class B func2"<<endl;} };下面正确的叙述是( )。
A.A::func2()和B::func1()都是虚函数
B.A::func2()和B::func1()都不是虚函数
C.B::func1()是虚函数,A::func2()不是虚函数
D.B::func1()不是虚函数,A::func2()是虚函数
正确选项:--------
11.下列引用的定义中,( )是错误的。
A.int i; int &j=i;
B.int i; int &j; j=i;
C.float i; float &j=i;
D.char d; char &k=d;
正确选项:--------
12.一个( )允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值可以取任意数据类型。
A.函数模板
B.模板函数
C.类模板
D.模板类
正确选项:--------
13.()是一个在基类中说明虚函数,它在该基类中没有定义,但要求任何派生类中的可访问性的规定是相同的。
A.纯虚函数
B.虚析构函数
C.虚构造函数
D.静态成员函数
正确选项:--------
14.下列静态数据成员的特性中,( )是错误的。
A.说明静态数据成员时前边要加关键字static来修饰
B.静态数据成员在类体外进行初始化
C.引用静态数据成员时,要在静态数据成员名前加和作用域运算符
D.静态数据成员不是所有对象所共有的
15.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( )。
A.public成员
B.private成员
C.protected成员
正确选项:--------
D.友元
正确选项:--------
16.若一个类中含有纯虚函数,则该类称为( )。
A.基类
B.纯基类
C.派生类
D.抽象类
17.声明一个类的对象时,系统自动调用( )函数。
A.成员函数
B.构造函数
C.析构函数
D.普通函数
18.关于纯虚函数和抽象类的描述中,错误的是()。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现。
B.抽象类是指具有纯虚函数的类。
C.一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
D.抽象类作为基类来使用,其纯虚函数的实现由派生类给出。
正确选项:--------
19.使用string类,必须在程序中包含头文件()。
A.string.h
B.string
C.cstring.h
D.cstring
20.交换两个string类对象所表示的字符串的内容,应该使用string类的()函数。
A.assign
B.insert
C.swap
D.find
正确选项:--------
21.对基类和派生类的描述中错误的是( )。
A.派生类是基类的具体化
B.基类继承了派生类的属性
C.派生类是基类定义的延续
D.派生类是基类的特殊化
正确选项:--------
22.要求打开文件 d:file.dat,可写入数据,正确的语句是( )。
正确选项:--------
A.ifstream infile("d:file.dat", ios::in);
B.ifstream infile("d:\file.dat", ios::in);
C.ofstream infile("d:file.dat", ios::out);
D.fstream infile("d:\file.dat", ios::in| ios::out);
正确选项:--------
23.在下列关键字中,用以说明类中公有成员的是( )。
A.public
B.private
C.protected
D.friend
正确选项:--------
24.关于下面程序段说法正确的是( ) class X { private: int n; public: X(X&); }; X::X(X&x) {n=x.n} X obj1,obj2(obj1);
A.语句obj2(obj1);的功能是用对象obj1初始化具有相同类类型的对象obj2
B.语句obj2(obj1);的功能是用对象obj2初始化具有相同类类型的对象obj1
C.X(X&x)中的&符号可以删除
D.X(X&x)函数中不能访问对象的私有成员
25.( )只能访问静态成员变量,不能访问非静态成员变量。
A.静态函数
B.虚函数
C.构造函数
D.析构函数
26.下列关于this指针的说法,错误的是()。
A.this指针指向当前正在操作的对象
B.this指针只存在于非静态成员函数中
C.在成员函数中对非静态数据成员的访问是通过this指针完成的
D.静态成员函数中可以通过this指针访问非静态成员
27.下面关于友元的描述中,错误的是( )。
A.友元函数可以访问该类的私有数据成员
B.一个类的友元类中的成员函数都是这个类的友元函数
C.友元可以提高程序的运行效率
D.类与类之间的友元关系可以继承
28.类模板的使用实际上是类模板实例化成一个具体的( )。
A.类
B.对象
C.函数
D.变量
29.下列关于运算符重载正确的是()。
A.运算符重载可以改变运算符的操作数个数
B.运算符重载可以改变运算符的优先级
C.运算符重载可以改变运算符的结合性
D.运算符重载不可以改变语法结构
正确选项:--------