C++考试试卷
1. 已知:char *s="123456"; 则cout<<s+2; 的输出结果为()。
构造函数可以被重载
A) 123456      B) 3          C) 3456        D) 2
2. 已知:char *s="abcde"; 则sizeof(s)、sizeof(*s)、strlen(s)的值依次为()。
A) 6 1 5        B) 4 1 5      C) 6 5 4        D) 4 4 5
3. 下列语句中正确的是()。
A) char *s; *s="abcdefg";
B) char *s; cin>>s;
C) char *s1="abcd",*s2="efghijk";strcpy(s1,s2);
D) char *s="abcdefg"; cout<<*s;
4.  C++中,关于构造函数和析构函数,正确的描述是()。
A) 在定义类时,必须自定义构造函数和析构函数,在创建对象时自动调用构造函数,在释放对象时自动调用析构函数
B) 构造函数和析构函数均可以重载
C) 已知类Student以及Student *p; 在使用p=new Student;时自动调用无参构造函数创建动态对象,在delelte p;时自动调用析构函数释放动态对象
D) 构造函数和析构函数都可以成为虚函数
5. 关于拷贝构造函数的描述正确的是()。
A) 通常的拷贝构造函数的参数是对象的指针类型
B) 如果不自定义拷贝构造函数,系统提供默认的拷贝构造函数
C) 如果有自定义的构造函数,系统就不再提供拷贝构造函数
D) 如果需要用已有对象为新创建的对象初始化时,就必须自定义拷贝构造函数
6. 有关静态成员的描述错误的是()。
A) 某个类的静态数据成员由该类的所有对象所共享
B) 类的公有静态数据成员既可以用类的对象访问,也可以直接用作用域运算符“::”通过类名来访问
C) 静态数据成员既可以是私有成员,也可以是公有成员
D) 类中一旦定义了静态数据成员,就必须定义静态成员函数,以便对静态数据成员进行操作
7. 一个类的友元函数或友元类能够通过成员访问运算符访问该类的()。
A) 所有成员B) 私有成员    C) 保护成员D) 公有成员
8. 下面关于继承方式的描述中错误的是()。
A) 公有继承时,基类的公有成员和保护成员在派生类中都成为公有成员
B) 私有继承时,基类的公有成员和保护成员在派生类中都成为私有成员
C) 保护继承时,基类的公有成员和保护成员在派生类中都成为保护成员
D) 无论哪种继承方式,基类中的私有成员在派生类中都无法直接访问
9. 类型兼容是指在基类对象可以出现的地方,都可以使用公有派生类的对象,已知:
class BaseClass
{  //…};
class DerivedClass:public BaseClass
{  //…};
BaseClass b,*pb;
DerivedClass d,*pd;
下面不属于类型兼容的是()。
A) b=d;
B) BaseClass &bb=d;
C) pd=&b;
D) pb=&d;
10. 在派生类中重新定义虚函数时,除了(),其他方面都必须与基类中相应的虚函数保持一致。
A) 参数个数B) 参数类型C) 函数名称D) 函数体
11. 下列运算符中,必须使用成员函数进行重载的是()。
A) ==                    B) =            C) >>              D) ++
12. 下列关于运算符重载的描述中,错误的是()。
A) 运算符重载不可以改变优先级
B) 运算符重载不可以改变结合性
C) 运算符重载不可以改变运算符的操作数个数
D) 加法运算符“+”和赋值运算符“=”都重载之后,意味着“+=”也被重载了
13. 有关运算符重载的说法错误的是()。
A) 在一个类中,可以对一个操作符进行多次重载
B) 重载赋值运算符“=”时,为了保持原有特性,重载运算符函数中应该使用返回语句“return *this;”
C) C++中所有的运算符都可以被重载
D) 如果在某个类中使用成员函数对运算符重载,其左操作数必须是该类的对象
14. 已知某个类的友元函数重载了+=和-,a,b,c是该类的对象,则“a+=b-c”被C++编译器解释为()。
A) operator+=(a,operator-(b,c))
B) a.operator+=(b.operator-(c))
C) operator+=(a,b.operator-(c))
D) a.operator+=(operator-(b,c))
15. 下面4个选项中,专门用于读取单个字符的是()。
A) ad()    B) ()    C) cin.put()    D) line()
16. 下列关于getline( )函数的叙述中,错误的是()。
A) getline( )函数仅用于从键盘而不能从文件读取字符串
B) getline( )函数读取字符串长度是受限制的
C) getline( )函数读取字符串时,遇到终止符就停止
D) getline( )函数中所使用的终止符默认是换行符,也可指定其他终止符
17. 打开文件的方式中,()以追加方式打开文件。
A) ios::in        B) ios::out    C) ios::app    D) ios::trunc
18. 当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为()。
A) ios:: out| ios::binary
B) ios::in| ios::binary
C) ios::out
D) ios::in
19. 有关函数模板和模板函数说法错误的是()。
A) 函数模板只是对函数的描述,编译器不为其产生任何执行代码,所以它不是一个实实在在的函数
B) 模板函数是实实在在的函数,它由编译系统在遇到具体函数调用时所生成,并调用执行
C) 函数模板需要实例化为模板函数后才能执行
D) 当函数模板和一般函数同名时,系统先去匹配函数模板,将其实例化后进行调用
20.一个()允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。
A) 类模板B) 模板类C) 函数模板D) 模板函数
二、判断题(每空1分,共20分)
T,错误为F)
1. 类定义中的成员默认的访问权限是private。
2. 一个类中的保护成员和公有成员类似,在程序的任何地方都可以被访问。
3. 系统提供的缺省构造函数没有参数,所以自定义构造函数必须带有参数。
4. 一旦自定义了构造函数,系统便不再提供缺省的构造函数。
5. 一个类只能有一个构造函数和一个析构函数。
6. 静态数据成员必须在类中进行定义和初始化。
7. 静态成员函数中不能访问非静态成员。
8. 重载插入运算符“<<”必须采用成员重载。
9. 如果类A是类B的友类,那么类A中的所有成员函数都可以访问类B中的所有成员。
10. 释放派生类的对象时,首先调用基类的析构函数,然后调用派生类的析构函数。
11. 拥有纯虚函数的类称为虚拟基类,它不能用来定义对象。
12. 虚函数只有在有继承的情况时才会存在。
13. 已知:class Base1{//…};
class Base2{//…};
class Derived:public Base1,public Base2
{  Derived():Base2(),Base1(){}
//…
};
创建Derived类的对象时,先调用Base2的构造函数,然后调用Base1的构造函数,最后调用Derived的构造函数。
14. 基类的指针或引用调用虚函数时采用后期绑定。
15. 由抽象基类继承得到的派生类肯定是具体类。
16. 友元函数内能够访问任何对象的任何成员。
17. 对二元运算符采用成员函数重载时,只需要一个参数,而且该参数可以是内部类型。
18. 对一元运算符采用某个类的友元函数重载时需要一个参数,参数为该类的对象,不能是其他类型。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。