《程序设计基础二》理论复习题
一、单选题
1、下列关于类和对象的叙述中,错误的是( )。
A、一个类只能有一个对象 B、对象是类的具体实例
C、类是对某一类对象的抽象 D、类和对象的关系是一种数据类型与变量的关系
2、在 C++中,用于实现运行时多态性的是( )。
A、内联函数 B、重载函数 C、模板函数 D、虚函数
3、下列关于运算符重载的叙述中,正确的是( )。
A、通过运算符重载,可以定义新的运算符 B、有的运算符只能作为成员函数重载
C、若重载运算符 +,则相应的运算符函数名是+ D、重载二元运算符时,必须声明两个形参
4、对于语句cout<<x<<endl; 错误的是描述是( )。
A、“cout ”是一个输出流对象 B、“endl ”的作用是输出回车换行
C、“x”是一个变量 D、“<<”称作提取运算符
5、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的一共有几个?( )。
class MyBASE
{
private:
int k;
public:
void set(int n){ k=n;}
int get( )const{ return k;}
};
class MyDERIVED: protected MyBASE
{
protected:
int j;
public:
void set(int m, int n){ MyBASE::set(m); j=n;}
int get( ) const { return MyBASE::get( )+j; }
};
A、4 B、3 C、2 D、1
6、执行如下的程序段后,输出结果是( )。
cout.fill('*'); cout.width(6); cout.fill('#'); cout << 123 << endl;
A、###123 B、123### C、***123 D、123***
7、在下列函数原型中,可以作为类AA构造函数的是( )。
A、void AA(int); B、int AA(); C、AA(int)const; D、AA(int);
8、下面四个选项中,( )是用来声明虚函数的。
A、virtual B、public C、include D、using namespace
9、实现运行时的多态性要使用( )。
A、重载函数 B、构造函数 C、析构函数 D、虚函数
10、要实现动态联编,必须通过( )调用虚函数。
A、对象指针 B、成员名限定 C、对象名 D、派生类名
11、以下( )成员函数表示纯虚函数。
A、virtual int vf(int); B、void vf(int)=0;
C、virtual void vf()=0; D、virtual void vf(int){}
12、有如下类声明: class XA
{ private: int x;
public: XA(int n){ x=n;} };
class XB: public XA
{ private: int y;
public: XB(int a,int b); };
在构造函数 XB的下列定义中,正确的是( )。
A、XB::XB(int a,int b): x(a),y(b){ } B、XB::XB(int a,int b): XA(a),y(b){ }
C、XB::XB(int a,int b): x(a),XB(b){ } D、XB::XB(int a,int b): XA(a),XB(b){ }
13、在表达式 x+y*z中, +是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。则 operator+有( )个参数, operator* 有( )参数。 ( )
A、2、2 B、2、1 C、1、2 D、1、1
14、类的析构函数的作用是( )。
A、作为类的一般成员函数 B、类的初始化 C、对象的初始化 D、多态性与虚函数对象的删除
15、一个类的友元函数或友元类可以访问该类的( )。
A、私有成员 B、保护成员 C、公有成员 D、所有成员
16、下列对派生类的描述中,( )是错误的。
A、一个派生类可以作为另一个派生类的基类 B、派生类至少有一个基类
C、派生类的成员除了它自己的成员外, 还包含了它的基类的成员 D、派生类中继承的基类
成员的访问权限到派生类中保持不变
17、下列的描述中,( )是错误的。
A、 公有继承时基类中的public成员在派生类中仍是public的 B、公有继承时基类中的private成员在派生类中仍是private的
C、公有继承时基类中的protected成员在派生类中仍是protected的 D、私有继承时基类中的public成员在派生类中仍是private的
18、下列虚基类的声明中正确的是( )。
A、class virtual B: public A B、virtual class B: public A
C、 class B: public A virtual D、class B: virtual public A
19、若类A和类B的定义如下:
class A
{
int i, j;
public:
A(int m, int n): i(m), j(n) {}
int Geti() { return i;}
};
class B: public A
{
int k;
public:
B(int m, int n, int u): A(m, n), k(u) {}
void Make() { k = i * j; }
};
int main()
{
B b(1, 2, 3);
return 0;
}
则上述定义中,( )是非法的表达式.
A、 k=i*j; B、int k; C、return i; D、void Make( )
20、若有以下程序:
#include <iostream>
using namespace std;
class A
{
public:
int a;
A() { a =10; }
};
class A1: public A1.
{
public:
A1() { a = a + 1; } \
};
class A2: public A
{
public:
A2() { a = a + 2; }
};
class B: public A1, public A2
{
public:
B() {}
void Print() { cout << a << endl; }
};
int main()
{
B obj;
obj.Print();
return 0;
}
则程序运行后的输出结果为:( )
A、产生语法错误 B、13 C、12 D、10
21、在下面的4个关键字中,( )是用来说明虚函数的。
A、virtual B、public C、protected D、private
22、如果一个类至少有一个纯虚函数, 那么该类称为( )。
A、抽象类 B、虚基类 C、派生类 D、以上都不对
23、cin是某个类的标准对象,该类是( )。
A、ostream B、istream C、stdout D、stdin
24、调用一个成员函数时,使用动态联编的情况是( )。
A、通过对象调用一虚函数 B、通过指针或引用调用一虚函数
C、通过对象调用一静态函数 D、通过指针或引用调用一静态函数
25、假定CTest为一个类,并且有一无默认值的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的( )。
A、有参构造函数 B、无参构造函数 C、拷贝构造函数 D、赋值重载函数
26、下列对类的构造函数和析构函数描述正确的是( )。
A、构造函数可以重载,析构函数不能重载 B、构造函数不能重载,析构函数可以重载
C、构造函数可以重载,析构函数可以重载 D、构造函数不能重载,析构函数不能重载
27、下面有关重载函数的说明中,( )是正确的。
A、重载函数必须具有不同的返回值类型 B、重载函数形参个数必须不同
C、重载函数一般具有不同的形参列表 D、重载函数名可以不同
28、下列有关类与对象的说法中,( )是不正确的。
A、对象是类的一个实列 B、任何一个对象只能属于一个具体的类
C、一个类只能有一个对象 D、类和对象的关糸和数椐类型与变量的关糸类似
29、已知: Print( )函数是一个类的常成员函数,它无返回值,下列表示中,正确的是( )。
A、void Print( ) const; B、const void Print( ); C、void const Print( ); D、void
Print(const)
30、假定Myclass为一个类,那么下列的函数说明中( )为该类的析构函数。
A、void ~Myclass( ); B、~Myclass( int n) C、Myclass( ); D、~Myclass( )
31、下面类的定义中有( )处错误。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论