南开20秋学期(1709、1803、1809、1903、1909、2003、2009 )《面向对象程序设计》在线作业[答案]满分答案
20秋学期(1709、1803、1809、1903、1909、2003、2009 )《面向对象程序设计》在线作业
试卷总分:100 得分:100
一、单选题 (共 35 道试题,共 70 分)
1.已知“int a=10,*p;int *&r=p; r=&a;*p=20;cout<<a;”,则输出为()。
A.10
B.20
C.不确定值
D.程序有错误
2.可以用p.a的形式访问派生类对象p的基类成员a其中a是( )。
A.私有继承的公有成员
B.公有继承的私有成员
C.公有继承的保护成员
D.公有继承的公有成员
3.下列关于虚函数的说明中,正确的是()。
A.从虚基类继承的函数都是虚函数
B.虚函数不得是静态成员函数
C.只能通过指针或引用调用虚函数
D.抽象类中的成员函数都是虚函数
4.在一个string类对象表示的字符串中查找子串,应该使用string类的()函数。
A.assign
B.insert
C.swap
D.find
5.执行语句“string str("abc");”时,系统会自动调用string类的构造函数()。
A.string()
B.string(const char *s)
C.string(const string &str)
D.string(size_type n, char c)
6.下面说法中正确的是( )。
A.一个类只能定义一个构造函数,但可以定义多个析构函数
B.一个类只能定义一个析构函数,但可以定义多个构造函数
C.构造函数与析构函数同名,只要名字前加了一个求反符号(~)
D.构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以
7.已知函数原型:void f(int a, int b=3,char c='*'); 则下面的函数调用中,不合法的调用是()。
A.f(5)
B.f(5,8)
C.f(6, , '#')
D.f(0,0, '#')
8.( )是析构函数的特征。
A.析构函数可以有一个或多个参数
B.析构函数定义只能在类体内
C.析构函数名与类名不同
D.一个类中只能定义一个析构函数
9.已知“int a=10;int &r=a; r=r+20;cout<<a;”,则输出为()。
A.10
B.20
C.30
D.不确定值
10.关于下面程序段说法正确的是( ) 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)函数中不能访问对象的私有成员
11.类aClass的定义如下: class aClass {public: aClass(){} aClass(int i){value=new int(i);} int *value; } 若要对类中的value赋值,则下面的语句中,正确的是()。
A.aClass my; my.value=10;
B.aClass my; *my.value=10;
C.aClass my; my.*value=10;
D.aClass my(10);
12.包含类fstream定义的头文件是( )。
A.fstream
B.ofstream
C.ifstream
D.iostream
13.如果类A被说明成类B的友元,则()。
A.类A的成员函数不得访问类B的所有成员
B.类A的成员函数可以访问类B的所有成员
C.类A的成员即类B的成员
D.类B的成员即类A的成员
14.进行文件操作时需要包含_ ()头文件。
A.iostream
B.fstream
C.stdio
D.stdlib
15.派生类中的成员不能访问基类中的()。
A.私有成员
B.公有成员
C.保护成员
D.以上都可以
16.下列关于类的继承描述中,( )是错误的。
A.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
B.派生类也是基类,但基类不一定具有派生类的全部属性和方法
C.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
D.一个基类可以有多个派生类,一个派生类可以有多个基类
17.要求打开文件 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);
18.空类的声明( )是正确的。
A.class类名;
B.class类名{};
C.class类名{}
D.class类名
19.对于多重继承,有( )。
A.一个派生类只能有一个基类
B.一个基类只能产生一个派生类
C.一个基类必须产生多个派生类
D.一个派生类可有多个基类
20.( )的功能是对对象进行初始化。
A.析构函数
B.数据成员
C.构造函数
D.静态数据成员
21.在C++中,要实现动态联编,可以使用( )调用虚函数。
A.类名
B.派生类指针
C.对象名
D.基类指针
22.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是()。
A.派生类的对象可以直接访问基类的所有成员
B.派生类的对象可以初始化基类的引用
C.派生类的对象不可以直接访问基类中的私有成员
D.派生类的对象的地址可以赋给指向基类的指针
23.下列关于C++类的描述中错误的是( )。
A.类与类之间可以通过一些手段进行通信和联络
B.类用于描述事物的属性和对事物的操作
C.类与类之间必须是平等的关系,而不能组成层次关系
D.类与类之间可以通过封装而具有明确的独立性
24.已知X类.则当程序执行到语句X *array=new X[2];时,调用了( )次构造函数。
A.0
B.1
C.2
D.3
25.下列关于构造函数调用顺序的描述中,正确的是()。
A.创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数
B.创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数
C.创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
D.创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数
26.对基类和派生类的描述中错误的是( )。
A.派生类是基类的具体化
B.基类继承了派生类的属性
C.派生类是基类定义的延续
D.派生类是基类的特殊化
27.声明一个类的对象时,系统自动调用( )函数。
A.成员函数
B.构造函数
C.析构函数
D.普通函数
28.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是()。
A.派生类的对象可以赋给基类对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类的成员
D.派生类的对象的地址可以赋给指向基类的指针
29.在使用类创建对象时,系统会自动调用该对象的()完成对象中数据成员的初始化等操作。
A.友元函数
B.虚函数
C.构造函数
D.析构函数
30.下列关于构造函数的描述中,错误的是( )。
A.构造函数可以设置默认参数
B.构造函数在说明类变量时自动执行
C.构造函数可以对静态数据成员进行初始化
D.构造函数可以重载
31.下列引用的定义中,( )是错误的。
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;
32.在C++中,类与类之间的继承关系具有( )。
A.自反性
B.对称性
C.传递性
D.反对称性
33.下面关于类的成员函数描述不正确的是()。
A.静态成员函数内可以直接访问类的非静态成员数据
B.静态成员函数内可以直接访问类的静态成员数据
C.非静态成员函数可以直接访问类的非静态成员数据
D.非静态成员函数可以直接访问类的静态成员数据
34.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( )。
A.不同
B.相同
C.相容
D.部分相同
35.用于类中虚成员函数说明的关键字( )。
A.virtual
B.public
C.protected
D.private
南开20秋学期(1709、1803、1809、1903、1909、2003、2009 )《面向对象程序设计》在线作业[答案]多选题答案
二、判断题 (共 15 道试题,共 30 分)
36.以app方式打开文件时,当前的读指针和写指针都定位于文件尾。
37.派生类对基类继承的成员函数进行重定义后,则通过派生类对象和基类对象调用的都是重定义后的成员函数。
38.C++的I/O系统通过流的机制实现文件和控制台的输入输出操作。
39.定义重载函数时,应保证函数类型有所不同。
40.在一个类中最多只能定义1个构造函数和1个析构函数。
41.派生类是从基类派生出来,它不能再生成新的派生类。
42.C语言中scanf命令在c++中改用cin。
43.预定义的提取符和插入符是可以重载的。
44.对象数组的元素可以是不同类的对象。
45.在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。
46.cin是输出流的一个对象,处理标准输出。
47.说明或定义对象时,类名前面不需要加class关键字。
48.编程是将所设计的算法转换成计算机能够运行的代码的过程。
49.定义模板的关键字是template。
50.程序设计过程是指编写程序的过程。
南开20秋学期(1709、1803、1809、1903、1909、2003、2009 )《面向对象程序设计》在线作业[答案]历年参考题目如下: