《C++选择题2.doc》由会员分享,可在线阅读,更多相关《C++选择题2.doc(36页珍藏版)》请在金锄头文库上搜索。
1、1. 在语句cindata;中,cin是(类与对象3)C+的关键字类名对象名函数名2. 有如下程序:#include using namespace std;class Complexdouble re, im;public:Complex(double r, double i) : re(r), im(i) double real() const return re; double image() const return im; Complex& operator += (Complex a)re += a.re;im += a.im;return *this;ostream& opera
2、tor (ostream& s, const Complex& z)return s(z.real(),z.image();int main()Complex x(1,-2), y(2,3);cout (x+=y) endl;return 0;执行这个程序的输出结果是(1,-2)(2,3)(3,5)(3,1)3. 执行如下的程序段后,输出结果是( )。cout.fill(*); cout.width(6); cout.fill(#); cout 123 endl;#123123#*123123*4. 在进行完任何C+流的操作后,都可以用C+流的有关成员函数检测流的状态;其中只能用于检测输入流状
3、态的操作函数名称是()faileofbadgood5. 在C+语言中,打开一个文件就是将这个文件与一个( )建立关联。结构流类对象6. 下面关于C+流的叙述中,正确的是( )。cin是一个输入流对象可以用ifstream定义一个输出流对象执行语句序列char *y=PQMN; couty; 将输出字符串 PQMN的地址执行语句序列char x80; cin.getline(x,80); 时,若键入Happy new year则x中的字符串是Happy7. 在说明语句:int *f();中,标识符f代表的是().一个用于指向整型数据的指针变量一个用于指向一维数组的行指针一个用于指向函数的指针变量
4、一个返回值为指针型的函数名8. 有如下函数模板定义:template T func(T x, T y) return x*x+y*y; 在下列对func的调用中,错误的是( )。 func(3, 5);func(3.0, 5.5); func (3, 5.5); func(3, 5.5);在下列函数原型中,可以作为类AA构造函数的是( )。void AA(int);int AA( );AA(int)const;AA(int);9. 有如下函数模板定义:template T func(T x,T y) return x*x+y*y;在下列对 func 的调用中,错误的是( )。func(3,5)
5、;func(3.0,5.5);func(3,5.5);func(3,5.5);10. 有如下函数模板templateT square(T x) return x* x; 其中T是函数形参函数实参模板形参模板实参11. 在C+中,用于实现运行时多态性的是( )。内联函数重载函数模板函数虚函数12. #include using namespace std;class Apublic:virtual void func1( ) coutA1; void func2( ) coutA2; ;class B:public Apublic:void func1( ) coutB1; void func2
6、( ) coutfunc1( );p-func2( );return 0;运行此程序,屏幕上将显示输出B1B2A1A2B1A2A1B213. 要实现运行时的多态性,必须通过( )调用虚函数基类指针派生类指针对象名派生类名14. 要实现动态联编,派生类中的虚函数( )返回的类型可以与虚函数的原型不同参数个数可以与虚函数的原型不同参数类型可以与虚函数的原型不同以上都不对15. 要实现动态联编,必须通过( )调用虚函数对象指针成员名限定对象名派生类名16. 虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多
7、态调用。有如下程序:#include using namespace std;class Basepublic:virtual void f()coutf0+;void g()coutg0+;class Derived:public Basepublic:void f()coutf+;void g()coutf();p-g();return 0;运行时输出的结果是( )。f+g+f0+g+f+g0+f0+g0+17. 下面四个选项中,( )是用来声明虚函数的。virtualpublicincludeusing namespace18. 下面描述中,正确的是( )。virtual可以用来声明虚函
8、数含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类即使基类的构造函数没有参数,派生类也必须建立构造函数静态数据成员可以通过成员初始化列表来初始化19. 下面关于C+语言的描述错误的是( )。C+语言支持数据封装C+语言中引入友元没有破坏封装性C+语言允许函数名和运算符重载C+语言支持动态联编20. 有如下程序#includeusing namespace std;class Baseprotected:Base() cout A; Base(char c) cout c; ;class Derived :public Basepublic:Derived(char c) cout c;
9、;int main()Derived d1(B);return 0;执行这个程序屏幕上将显示输出_。BBAABBB21. 在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。派生类的对象可以赋给基类的对象派生类的对象可以初始化基类的引用派生类的对象可以直接访问基类中的成员派生类的对象的地址可以赋给指向基类的指针22. 在公有继承的情况下,允许派生类直接访问的基类成员包括?公有成员公有成员和保护成员公有成员保护成员和私有成员保护成员23. 在公有继承的情况下,基类成员在派生类中的访问权限() 。受限制保持不变受保护不受保护24. 在多继承中,公有派生和私有派生对于基类成员
10、在派生类中的可访问性与单继承的规则( )。完全相同完全不同部分相同,部分不同以上都不对25. 下面叙述不正确的是()。基类的保护成员在派生类中仍然是保护的成员基类的保护成员在公有派生类中仍然是保护的基类的保护成员在私有派生类中仍然是私有的对基类成员的访问必须是无二义性的26. 下面描述中,表达错误的是 ()公有继承时基类中的public成员在派生类中仍是public的公有继承时基类中的private成员在派生类中仍是private的公有继承时基类中的protected成员在派生类中仍是protected的私有继承时基类中的public成员在派生类中是private的27. 运用运算符delet
11、e删除一个动态对象时( )。系统首先为该动态对象调用构造函数,再释放其占用的内存系统首先释放该动态对象占用的内存,再为其调用构造函数系统首先为该动态对象调用析构函数,再释放其占用的内存系统首先释放动态对象占用的内存,再为其调用析构函数28. 有如下类声明:class MyBASEint k;public:void set(int n) k=n;int get( )const return k; ;class MyDERIVED: protected MyBASEprotected:int j;public:void set(int m, int n) MyBASE:set(m); j=n;in
12、t get( )const return MyBASE:get( )+j; ;则类MyDERIVED中保护的数据成员和成员函数的个数是( )。432129. 有如下类定义:class MyBaseint k;public: MyBase(int n=0):k(n) int value()return k;class MyDerived: MyBase int j;public; MyDerived(int i): j(i) int getK()const return k; int getJ()constreturn j;在一个派生类对象结束其生命周期时( )。先调用派生类的析构函数后调用基类的析构函数先调用基类的析构函数后调用派生类的析构函数如果基数没有定义析构函数,则只调用派生类的析构函数如果派生类没有定义析构函数,则只调用基类的析构函数30. 执行下列语句后的结果为().int x=3,y;int *px=&x;y=*px+;x=3,y=4x=3,y=3x=4,y=4x=3,y不知48. 在用关键字class定义的类中,以下叙述正确的是( )。在类中,不作特别说明的数据成员均为私有类型在类中,不作特别说明的数据成员均为公有类型类成员的定义必须是成员变量定义在前,成员函