C++题库

一、选择题
1)以下关键字不能用来声明类的访问权限的是______
  Apublic  Bstatic  Cprotected  Dprivate
2)在公有继承的情况下,允许派生类直接访问的基类成员包括______
  A)公有成员                          B)公有成员和保护成员
  C)公有成员保护成员和私有成员        D)保护成员
3)关于运算符重载,下列表述中正确的是______
  AC++已有的任何运算符都可以重载
  B)运算符函数的返回类型不能声明为基本数据类型
  C)在类型转换符函数的定义中不需要声明返回类型
  D)可以通过运算符重载来创建C++中原来没有的运算符
4)关于关键字classtypename,下列表述中正确的是______
  A)程序中的typename都可以替换为class
  B)程序中的class都可以替换为typename
  C)在模板形参表中只能用typename来声明参数的类型
  D)在模板形参表中只能用classtypename来声明参数的类型
5)有如下程序
  #include<iostream>
  #include<iomanip>
  using namespace std;
  class MyClass{
  public:
      MyClass(){cout<<’A;}
      MyClass(char c ){cout<<c;}
      ~MyClass(){out<<’B;}
  };
  void  main(){
      MyClass  p1,*p2
      p2=new MyClass(‘X’);
      delete p2;}
  执行这个程序幕上将显示输出______
  AABX          BABXB      CAXB    DAXBB
 6)有如下程序
  #include<iostream>
  using namespace std;
  class Base{
  protected:
    Base(){cout<<’A’;}
    Base(char c){cout<<c;}
  };
  class Derived:public Base{
  public:
    Derived(char c ){cout <<c;}
  };
  int main(){
    Derived d1(‘B’);
  return 0;
  }
  执行这个程序屏幕上将显示输出______
  AB        BBA        CAB            DBB
 7)有如下类定义:
  class MyBase{
  int 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()const{return j;}
  };
  编译时发现有一处语法错误,对这个错误最佳准确的描述是
  A)函数getK试图访问基类的私有成员变量K
  B)在类MyDerived的定义中,基类名MyBase前缺少关键字public  protectedprivate
  C)类MyDerived缺少一个无参的构造函数
  D)类MyDerived的构造的数没有对基数数据成员K进行初始化
8)在一个派生类对象结束其生命周期时
  A)先调用派生类的析构函数后调用基类的析构函数
  B)先调用基类的析构函数后调用派生类的析构函数
  C)如果基数没有定义析构函数,则只调用派生类的析构函数
  D)如果派生类没有定义析构函数,则只调用基类的析构函数
9)有如下程序
#include<iostream>
using namespace std;
class A{
public:
    virtual void funcl(){cout<< "A1";}
    void fune2(){cout<< "A2";}
};
class B: public A{
public:
    void func1(){cout<< "B1";}
    void func2(){cout<< "B2";}
};
void main(){
    B  *p=new B;
    p->funcl();
    p->func2();
} 
运行程序,屏幕上将显示输出______
  AB1B2        BA1A2          CB1A2          DA1B2
10)下列关于C++函数的叙述中,正确的是( )。正庚烷
 A)每个函数至少要具有一个参数
 B)每个函数都必须返回一个值
 C)函数在被调用之前必须先声明
 D)函数不能自己调用自己
11)下列关于类和对象的叙述中,错误的是( )。
 A)一个类只能有一个对象
 B)对象是类的具体实例
 C)类是对某一类对象的抽象
 D)类和对象的关系是一种数据类型与变量的关系
12)在C++中,用于实现运行时多态性的是( )。
 A)内联函数
 B)重载函数
 C)模板函数
 D)虚函数
13)下列关于运算符重载的叙述中,正确的是( )。
 A)通过运算符重载,可以定义新的运算符
 B)有的运算符只能作为成员函数重载
 C)若重载运算符+,则相应的运算符函数名是+
 D)重载一个二元运算符时,必须声明两个形参
14)下列关于模板的叙述中,错误的是( )。
 A检验检疫)模板声明中的第一个符号总是关键字template
 B)在模板声明中用 < > 括起来的部分是模板的形参表
 C)类模板不能有数据成员
 D)在一定条件下函数模板的实参可以省略
15)有如下类声明:
class Foo { int bar; };Foo类的成员bar是( )。
桅杆风 A)公有数据成员
 B)公有成员函数
 C)私有数据成员
 D)私有成员函数
16)有如下类声明:
class MyBASE{
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; }
};
则类MyDERIVED中保护的数据成员和成员函数的个数是( )。
 A   B3          C2            D1
17)已知在一个类体中包含如下函数原型: VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是( )。
 A)这是运算符-的重载运算符函数
期刊影响因子
 B)这个函数所重载的运算符是一个一元运算符
 C)这是一个成员函数
 D)这个函数不改变类的任何数据成员的值
18)有如下函数模板定义:
template <class T>  T func(T x, T y) { return x*x+y*y; }
在下列对func的调用中,错误的是( )。
 Afunc(3, 5);
 Bfunc(3.0, 5.5);
 Cfunc (3, 5.5);
 Dfunc<int>(3, 5.5);
19)在下列函数原型中,可以作为类AA构造函数的是( )。
 Avoid AA(int);
 Bint AA( );
 CAA(int)const;
 DAA(int);
20)下列关于this指针的叙述中,正确的是( 探索与创新)。
 A)任何与类相关的函数都有this指针
 B)类的成员函数都有this指针
 C)类的友元函数都有this指针
 D)类的非静态成员函数才有this指针
21)有如下程序:
#include <iostream>
using namespace std;
class Test {
public:
Test( ) { n+=2; }
~Test( ) { n-=3; }
static int getNum( ) { return n; }
private:
static int n;
};
int Test::n = 1;
int main( )
{
Test* p = new Test;
delete p;
cout << "n=" << Test::getNum( ) << endl;
return 0;
}
执行后的输出结果是( )。
 An=0   Bn=1         Cn=2         Dn=3
21)有如下程序:
#include <iostream>
using namespace std;
class A {
public:
A( ) { cout << "A"; }
};
ptvclass B { public: B( ) { cout << "B"; } };
class C : public A {
B b;
public:
C( ) { cout << "C"; }
};
int main( ) { C obj; return 0; }
执行后的输出结果是( )。
 ACBA   BBAC    CACB       DABC
22)有如下类声明:
class XA{
int x;
public:
XA(int n){ x=n;}
};
class XB: public XA{
int y;
public:
XB(int a,int b);
};
在构造函数XB的下列定义中,正确的是( )。
 AXB::XB(int a,int b): x(a), y(b){ }
 BXB::XB(int a,int b): XA(a), y(b){ }
 CXB::XB(int a,int b): x(a), XB(b){ }
 DXB::XB(int a,int b): XA(a), XB(b){ }
23)有如下程序:
#include <iostream>
using namespace std;
class BASE{
public:
~BASE( ){ cout<<"BASE";}
};
class DERIVED: public BASE {
public:
~DERIVED( ){ cout<<"DERIVED";}
};
int main( ){DERIVED x; return 0 ;}
执行后的输出结果是( )。
 ABASE
 BDERIVED
 CBASEDERIVED
 DDERIVEDBASE
24)在表达式 x+y*z中, + 是作为成员函数重载的运算符,* 是作为非成员函数重载的运算符。下列叙述中正确的是
)。
 Aoperator+有两个参数,operator*有两个参数
 Boperator+有两个参数,operator*有一个参数
 Coperator+有一个参数,operator*有两个参数
 Doperator+有一个参数,operator*有一个参数

本文发布于:2024-09-22 04:16:29,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/435135.html

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

标签:函数   成员   运算符   声明   重载   调用   模板
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议