答案:B
B。解析本题考查的是模极的概念。函数模板可以含有常规形参;函数模板的一个实例就是一个函数定义;类模板中的成员函数都是模板函数;在用类模板定义对象时,由于没有像函数实参表这样的额外信患渠道,因此无法按函数模板的方式省略模板形参,但是可以为类模板的参数设置默认值。
一:1A 2B 3A 4D 5D 6C 7A 8A 9C 10D
二:1拷贝 2多继承 3静态,动态 4返回类型、operator@、和参数表,一个类对象、另一个 *** 作数 5公有 6函数,类 7非静态成员函数、友元函数 8封装、多态、继承 9inline,friend 10动态、无参 11public、private、protected,private 12iostreamh,2,1下面关于成员函数特征的描述中,错误的是( )
A.成员函数不可以设置参数的默认值 B.成员函数可以重载
C.成员函数可以是内联函数 D.成员函数可以是静态的
2下面关于类模板叙述不正确的是( )
A.可以有多个构造函数 B类模板是模板类的实例
C一个类模板可以用来实例化多个模板类 D类模板可以有多个参数
3要使一个类成为抽象类,这个类应具有的条件是( )
A.至少有一个纯虚函数 B至少有一个虚函数 C只含有一个纯虚函数 D只含有一个虚函数
4有关运算符重载正确的描述是( )
AC++语言允许在重载运算符时改变运算符的 *** 作个数 BC++语言允许在重载运算符时改变运算符的优先级
CC++语言允许在重载运算符时改变运算符的结合性 DC++语言允许在重载运算符时改变运算符的原来的功能
5下列说法正确的是( )
A一个类的对象可以是另一个类的成员 B一个类可以作为另一个类的派生类
C一个类可以在另一个类定义体进行定义 D以上说法均正确
6下列各类函数中,不是类的成员函数
A构造函数 B析构函数 C友元函数 D拷贝构造函数
7派生类的对象对它的基类成员中 是可以访问的
A公有继承的公有成员 B公有继承的私有成员 C公有继承的保护成员 D私有继承的公有成员
8派生类对象可访问基类中的什么成员(
A公有继承的公有成员 B公有继承的私有成员 C公有继承的保护成员 D私有继承的公有成员
9定义析构函数时,应该注意( )
A其名与类名完全相同 B返回类型是void类型 C无形参,也不可重载 D函数体中必须有delete语句
10如果类A被说明成类B的友元,则( )
A类A的成员即类B的成员 B类B的成员即类A的成员
C类A的成员函数不得访问类B的成员 D类B不一定是类A的友元
二、填空题
1假定 AB 为一个类,则语句 AB(AB&x) ;为该类 _________ 构造函数的原型说明
2当一个派生类具有多个基类时,这种继承方式称为_ __
3C++ 支持的两种多态性分别是 _________ 多态性和 _________ 多态性
4运算符重载时,其函数名由 构成成员函数重载双目运算符时,左 *** 作数是 ,右 *** 作数是
5只有在 继承的情况下,基类和派生类之间才有赋值兼容性规则
6模板分为 模板和 模板
7运算符重载使用的两种方式是 和
8C++支持面向对象程序设计的四个要素是:抽象性、 、 和
9定义内联函数所用的关键字 ,定义友元所用的关键字为
10通过一个构造函数调用虚函数时,C++系统对该调用采用 联编3定义类的动态对象数组时,系统只能够自动调用该类的 _________ 构造函数对其进行初始化
11任何类中允许有 、 、 三种访问控制类型的成员,数据成员和成员函数的默认类型为
12C++标准库中的异常层次的根类定义在库的头文件 中
谢谢两位的回答可是你们的答案不一样,到底谁对呢
这个函数模板的定义就是错的,正确的应该是:
template<class
T1,class
T2>
T1
FUN(T2
n){return
n50;}
答案:C。
笔试
一、选择题(每小题2分,共70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
1-5BDACD
(1)下列叙述中正确的是 。
A)算法的效率只与问题的规模有关,而与数据的存储结构无关
B)算法的时间复杂度是指执行算法所需要的计算工作量
C)数据的逻辑结构与存储结构是一一对应的
D)算法的时间复杂度与空间复杂度一定相关
(2)在结构化程序设计中,模块划分的原则是 。
A) 各模块应包括尽量多的功能
B) 各模块的规模应尽量大
C)各模块之间的联系应尽量紧密
D) 模块内具有高内聚度,模块间具有低耦合度
(3)下列叙述中正确的是 。
A)软件测试的主要目的是发现程序中的错误
B)软件测试的主要目的是确定程序中错误的位置
C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作
D)软件测试是证明软件没有错误
(4) 下面选项中不属于面向对象程序设计特征的是 。
A)继承性
B)多态性
C)类比性
D)封装性
(5) 下列对列的叙述正确的是 。
A) 队列属于非线性表
B) 队列按”先进后出”的原则组织数据
C)队列在队尾删除数据
D) 队列按“先进先出”原则组织数据
6-10CABCA
(6)对下列二叉树
进行前序遍历的结果为
A)DYBEAFCZX
B)YDEBFZXCA
C)ABDYECFXZ
D)ABCDEFXYZ
(7)某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为
A)n+1
B)n-1
C)2n
D)n/2
(8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是 。
A)井
B)交
C)投影
D)笛卡儿乘积
(9)在E-R图中,用来表示实体之间是联系的图形是 。
A) 矩形
B)椭圆形
C)菱形
D)平行四边形
(10)下列叙述中错误的是 。
A) 在数据库系统中,数据的物理结构必须与逻辑结构一致
B)数据库技术的根本目标是要解决数据的共享问题
C)数据库设计是指在已有数据库管理系统的基础上建立数据库
D)数据库系统需要 *** 作系统的支持
11-15BADAC
(11)为了取代C中带参数的宏,在C++中使用
A)重载函数
B)内联函数
C)递归函数
D)友元函数
(12)下列关于类定义的说法中,正确的是
A)类定义中包括数据成员和函数成员的声明
B)类成员的缺省访问权限是保护的
C) 数据成员必须被声明为私有的
D)成员函数只能在类体外进行定义
(13)下列关于派生类构造函数和析构函数的说法中,错误的是
A)派生类的构造函数会隐含调用基类的构造函数
B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数
C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
(14)通过运算符重载,可以改变运算符原有的
A) *** 作数类型
B) *** 作数个数
C)优先级
D)结合性
(15)有如下函数模板:
template T souare(T x) (retumx x ;)
基中T是
A)函数形参
B)函数实参
C)模板形参
D)模板实参
16-20BCDBA
(16)使用输入输出 *** 作符setw,可以控制
A)输出精度
B)输出宽度
C)对齐方式
D)填充字符
(17)下列字符串中,不可以用作C++标识符的是
A)y_2006
B)____TEST__H
C)Retum
D)switch
(18)字面常量42、42、42L的数据类型分别是
A)long、double int
B)long、float、int
C)int、double、long
D)int、float、long
(19)执行下列语句段后,输出字符“”的个数是
for(int i =50;I>1;— i )cout<<””
A)48
B)49
C)50
D)51
(20)有如下程序段
int i =0, j=1;
int &r=i ; // ①
r =j; //②
intp=&i ; //③
p=&r ; //④
基中会产生编译错误的语句是
A)④
B)③
C)②
D)①
21-25CCCCA
(21)有如下函数定义:
void func (int a,int&b) {a++; b++;}
若执行代码段:
int x=0 ,y=1
func(x,y);
则变量x和y值分别是
A)0和1
B)1和1
C)0和2
D)1和2
(22)有如下程序:
#include
using namespace std;
class A{
public
static int a;
void init(){a=1;}
A(int a=2) {init();a++;}
};
int A:;a=0
A obj;
Int main()
{
cout< retum0;
}
运行时输出的结果是
A)0
B)1
C)2
D)3
(23)下列有关继承和派生的叙述中,正确的是
A) 派生类不能访问基类的保护成员
B)作为虚基类的类不能被实例化
C)派生类应当向基类的构造函数传递参数
D)虚函数必须在派生类中重新实现
(24)下列运算符中,不能被重载的是
A)&&
B)!=
C)
D)++
(25)下列函数模板的定义中,合法的是
A) template Tabs(T x) {return x <0 – x: x;}
B)template class Tabs(Tx){retumx<0 -x;x;}
C)template Tabs(T x){retum x<0 -x;x;}
D)template T abs(T x){returm x<0 -x;x;}
26-30CDBDA
(26)在语句cin>>data;中,cin是
A)C++的关键字
B)类名
C)对象名
D)函数名
(27)有如下程序:
#include
using namespace std;
class test {
private:
int a;
public:
test(){cout<<”constructor”< test(int a){cout< test(const test&_test)
{
a=_testa;
cout<<”copy constructor”< }
test(){cout<<”destructor”< };
int main()
}
test A(3)
return0;
运行时输出的结果是
A)3
B)constructor
destruclor
C)copy constructor
D)3
dstructor destruclor
(28)若有如下类声明
class My Class {
public:
MyClass() {cout<<1;}
};
执行下列语句
MyClass a,b[2],P[2];
以后,程序的输出结果是
A)11
B)111
C)1111
D11111
(29)有如下程序:
#include
using namespace std;
class point {
public:
static int number;
public:
point(){number++;
~point(){number-;}
};
imt point::number=0;
void main(){
pointptr;
printA,B;
{
pointptr_point=new point{3};
ptr=ptr_point;
}
pointC;
cout< delete[]ptr;
}
运行时输出的结果是
A)3
B)4
C)6
D)7
(30)如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。
#include
using namespace std;
class Base{
int a,b;
public:
Bace(int x ,int y) { a=x; b=y;}
Void show(){ cout< }
clsaa Derived:public Base {
int c ,d;
public:
Derived(int x,int y,int z,int m):Base(x,y){c=z; d=m;}
Void show(){ cout< };
int main()
{
Base B1(50,50),pb;
Derived DI(10,20,30,40);
Pb=&D1;
Pb->show();
Return 0;
}
运行时输出的结果是
A)10,20
B)30,40
C)20,30
D)50,50
30-35CBBBC
(31)有如下程序:
#include
using namespace std;
class A
{
public;
A(int i ){x= i ;}
Void sispa(){cout< Private:
int x ;
};
class B;publicA
{
public;
B(int i):A(i +10) {x =i ;}
voud dispb() {dispa();cout< Private:
Int x;
};
int main()
{
B b(2);
bdispb()
retum 0:
}
运行时输出的结果是
A)10,2
B)12,10
C)12,2
D)2,2
(32)虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:
#include
using namespace std;
class Base
{
public:
virtual void f(){cout<<”f0+”;}
void g() {cout<<”g0+”;}
};
class Derived:public Base
{
public:
void f() {cout<<”f+”;}
void g() {cout<<”g+”;}
};
int main()
{
Derived d;
Basep=&d;
p->f(); p->g();
return 0:
}
运行时输出的结果是
A)f+g+
B)f0+g+
C)f+g0+
D)f0+g0+
(33)下面程序中对一维坐标点类Point进行运算符重载
#include
using namespace std;
class point {
public:
point (int vaI) {x=val;}
point& operator++(){x++;retumthis;}
print operator++(int) {point old=this,++(this);retum old;}
int GetX() const {retum x;}
private:
int x;
};
int main()
{
point a(10);
cout<<(++a)GetX();
cout< retum();
}
编译和运行情况是
A)运行时输出1011
B)运行时输出1111
C)运行时输出1112
D)编译有错
(34)有如下程序:
#include
using namespace std;
int main()
{
char str[100],p;
cout<<”please input a string:”;
cin>>str;
p=str;
for(int i =0;p!=”\0”;p++, i ++);
cout<< i < retum 0;
}
运行这个程序时,若输入字符串为
abcdefg abcd
则输出结果是
A)7
B)12
C)13
D)100
(35)有如下程序::
#include
using namespace std:
class Sample
{
friend long fun (Sample s);
public:
Sample (long a ){x=a;}
Private:
long x;
};
long fun (Sample s)
{
if(sx<2)retum 1;
retum sxfun(Sample(sx-a));
}
int main()
{
int sum=0
for(int i =0; i <6; i ++) { sum+=fun(Sample( i );) }
cout< retum 0;
}
运行时输出的结果是
A)120
B)16
C)154
D)34
二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题卡1~15序号的横线上,答在试卷上不得分。
(1)在深度为7的满二叉树中,度为2的结点个数为 11、63 。
(2)软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于 2 2、黑盒 测试。
(3)在数据库系统中,实现各种数据管理体制功能的核心软件称为 33、DBMS 。
(4)软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于 44、开发 阶段。
(5)在结构化分析使用的数据流图(DFD)中,利用 55、数据字典 对其中的图形元素进行确切解释。
(6)C++中只有两个逻辑常量:true和 66、false 。
(7)若要访问指针变量p所指向的数据,应使用表达式 77、 P 。
(8)已知一个函数的原型是:
int fn(double x);
若要以527为实参调用该函数,应使用表达式 88、fn(527) 。
(9)有如下定义:
class MA{
int value;
public:
MA(int n=0):valut(n){}
};
MAta,tb;
其中MA类的对象名标识符是 99、tb 。
(10)如下类定义中包含了构造函数和拷贝数的原型声明请在横线处写正确的内容,使拷贝构造函数的声明完整。
Class my Class{
Private:
Int data:
Public:
MyClass(int value); //构造函数
MyClass(const 1010、myclass& another Object); //拷贝构造函数
}
(11)用来派生新类的称为 11
11、基类
,而派生出的新类称为它的子类或派生类。
(12)有如下程序:
#include
using namespace std;
clsaa CA{
public:
CAD{cout< };
class CB ;private CA{
public;
CB(){cout< };
int main(){cout< };
int main(){
CA a;
CB b;
retum0;
}
这个程序的输出结果是 12
12、AAB
。
(13)若将一个二元运算符重载为类的成员函数,其形参个数应该是 1313、1个
个。
(14)有如下程序:
#include
using namespace std;
class DA{
int k;
public:
DA(int x=1): k (x){}
~DA(){cout< };
int main(){
DA d[]={DA(3),DA(3),DA(3)};
DA p=new DA[2];
delete[]p;
return0;
}
这个程序的输出结果是 1414、11333
。
(15)C++语言中的多态性分为编译时的多态性和 1515、运行 时的多态性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)