c/c++理论基础知识题库3

  1. 下列程序划线处应填入的正确语句是 【正确答案: C】。

    class Base
    { public:
    void fun(){ cout<<“Base::fun”<<endl; }

    };
    class Derived:public Base
    { public:

    ​ void fun()
    ​ { _____________ //显示调用基类的函数fun()
    ​ cout<<“Derived::fun”<<endl;

    ​ }
    };

    A. fun();
    B. Base.fun();
    C. Base::fun();
    D. Base->fun();

  2. 以下对派生类的描述中,错误的是 【正确答案: C】。

    A. 一个派生类可以作为另外一个派生类的基类

    B. 派生类至少有一个基类

    C. 从派生类中继承的基类成员的访问权限到派生类中保持不变

    D. 派生类的成员除了其自己的成员外,还包含了其基类的成员

  3. 若一个类拥有多个构造函数,则这些构造函数函数之间为 【正确答案: B】。
    A. 重复关系

    B. 重载关系

    C. 继承关系

    D. 拷贝关系

  4. 类A中的一个成员函数原型为:void Set(A &a);其中"A &a"的含义为 【正确答案: C】。

    A. 指向类A的指针为a

    B. 将a的地址值赋给变量set

    C. a是类A对象的引用,用来作函数Set的形参

    D. 变量A与a按位相与作为函数Set的参数

  5. 在表达式x+y*2中,+是作为成员函数重载的运算符,是作为非成员函数重载的运算符,则operator+和operator分别有 【正确答案: B】个参数。

    A. 1、1
    B. 1、2
    C. 2、1

    D. 2、2

  6. C++中声明常量的关键字是 【正确答案: D】。

    A. extern

    B. public

    C. virtual

    D. const

  7. 若可以在类外用p.a的形式访问派生类对象p的基类成员a,则a是 【正确答案: C】。

    A. 公有继承的私有成员

    B. 公有继承的保护成员

    C. 公有继承的公有成员

    D. 私有继承的公有成员

  8. 在一个类中,可以对一个操作符进行 【正确答案: D】重载。

    A. 1种

    B. 不超过2种

    C. 不超过3种

    D. 多种

  9. 对于任意一个类,析构函数的个数最多为 【正确答案: B】。

    A. 0
    B. 1
    C. 2
    D. 3

  10. 以下各类函数中, 【正确答案: D】不是类的成员函数。

    A. 构造函数

    B. 析构函数

    C. 拷贝构造函数

    D. 友元函数

  11. 下列关于类和对象的叙述中,错误的是 【正确答案: D】。

    A. 对象是类的具体实例

    B. 类是对某一类对象的抽象

    C. 类和对象的关系是一种数据类型与变量的关系

    D. 一个类只能有一个对象

  12. 在C++类中定义的成员,其默认访问权限为 【正确答案: A】。

    A. private

    B. public

    C. protected

    D. static

  13. 以下选项中不是面向对象程序设计所具有的特性的是 【正确答案: B】。

    A. 数据封装

    B. 模板

    C. 继承

    D. 多态性

  14. 下面判断正确的是 【正确答案: b】。

    A. char c[4]=“abc”,d[4]=“abc”; 等价于char c[4]=d[4]=“abc”;

    B. char *s=“china”; 等价于char *s; s=“china”;

    C. char *a=“china”; 等价于char *a; *a=“china”;

    D. char str[10]={“china”}; 等价于char str[10]; str[ ]={“china”};

  15. 执行以下程序段后,y的值是 【正确答案: b】。

    int a[ ]={1,3,5,7,9};

    int x=0,y=1, ptr;
    ptr=&a[1];
    while(!x) { y+=
    (ptr+x); x++; }

    A. 24
    B. 4
    C. 2
    D. 1

  16. 若有定义int a[3][3]={ {1, 2}, {5}, {2, 4, 8} }; 初始值5是数组a存储在内存中的第 【正确答案: A】个元素。

    A. 4

    B. 3

    C. 2

    D. 1

  17. 下面关于C++语言的描述错误的是: 【正确答案: b】

    A. C++语言支持数据封装

    B. C++语言中引入友元没有破坏封装性

    C. C++语言允许函数名和运算符重载

    D. C++语言支持动态联编

  18. 下列说明中const char *p=“ok”; 其中p应该是 【正确答案: c】
    A. 指向字符常量的指针
    B. 指向字符的常量指针
    C. 指向字符串常量的指针
    D. 指向字符串的常量指针

  19. 假设要对类A定义加号操作符重载成员函数,实现两个A类对象的加法,并返回相加结果,则该成员函数的声明语句是: 【正确答案: c】
    A. A operator +(A &a, A &b);
    B. operator +(A a);
    C. A operator +(A &a);
    D. A &operator +( );

  20. 下列不能作为类的成员的是 【正确答案: b】

    A. 自身类对象的指针

    B. 自身类对象

    C. 自身类对象的引用

    D. 另一个类的对象

  21. 假定A为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数 成员a()的格式为 【正确答案: b】

    A. x.a

    B. x.a()

    C. x->a

    D. (*x).a()

  22. 关于对象概念的描述中,说法错误的是 【正确答案: a】

    A. 对象就是C语言中的结构变量

    B. 对象代表着正在创建的系统中的一个实体

    C. 对象是类的一个变量

    D. 对象之间的信息传递是通过消息进行的

  23. 类的实例化是指 【正确答案: b】

    A.定义类

    B.创建类的对象

    C.指明具体类

    D.调用类的成员

  24. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是 【正确答案: a】
    A. 类
    B. 对象
    C. 函数体
    D. 语句块

  25. 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 【正确答案: a】

    A. 内联函数

    B. 重载函数

    C. 递归函数

    D. 嵌套函数

  26. 关于this指针使用说法正确的是 【正确答案: a】

    A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码。

    B. 保证基类私有成员在子类中可以被访问。

    C. 保证基类保护成员在子类中可以被访问。

    D. 保证基类公有成员在子类中可以被访问。

  27. 下列说法中正确的是 【正确答案: b】

    A.类定义中只能说明函数成员的函数头,不能定义函数体

    B.类中的函数成员可以在类体中定义,也可以在类体之外定义

    C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中

    D.在类体之外定义的函数成员不能操作该类的私有数据成员

  28. 有如下类定义:

    class sample {

    int n;

    public:

    sample (int i=0):n(i){ }

    void setValue(int n0);

    };

    下列关于setValue成员函数的实现中,正确的是 【正确答案: b】。

    A.sample::setValue(int n0){n=n0;}

    B.void sample::setValue(int n0){n=n0;}

    C.void setValue(int n0){n=n0;}

    D.setValue(int n0){n=n0;}

  29. 在下面的类定义中,错误的语句是 【正确答案: c】

    class sample{

    public:

    sample(int val); //①

    ~sample( ); //②

    private:

    int a=2.5; //③

    public:

    sample( ); //④

    };

    A.① B.② C.③ D.④

  30. 在下列函数原型中,可以作为类AA构造函数的是 【正确答案: d】

    A.void AA(int); B.int AA( );

    C.AA(int) const; D.AA(int)

  31. 采用函数重载的目的在于 【正确答案: d】

    A. 实现共享 B.减少空间

    C. 提高速度 D.使用方便,提高可读性

  32. 下列静态数据成员特性中, 【正确答案: d】是错误的。

    A. 说明静态数据成员时前边要加修饰符static;

    B. 静态数据成员要在类体外进行初始化;

    C. 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域分辨符;

    D. 静态数据成员不是所有对象共有的

  33. 以下各选项中,正确的函数声明是 【正确答案: c】

    A.double func( int x , int y )

    B.int func( int x ; int y ) ;

    C.float func( int x , int y ) ;

    D.char func( int x , y ) ;

  34. 关于构造函数,下列说法不正确的是 【正确答案: B】。

    A. 构造函数的名字和类名相同

    B. 构造函数有且只有一个

    C. 构造函数在创建对象时自动执行

    D. 构造函数无任何函数返回类型

  35. 类成员的访问权限中, 【正确答案: C】只能被本类的成员函数和其友元函数访问。
    A. share

    B. public

    C. private

    D. protected

  36. 派生类的对象对它的基类成员中 【正确答案: A】是可以访问的。

    A. 公有继承的公有成员

    B. 公有继承的保护成员

    C. 保护继承的保护成员

    D. 保护继承的公有成员

  37. 下列描述错误的是: 【正确答案: a】
    A. 在创建对象前,静态成员不存在
    B. 静态成员是类的成员
    C. 静态成员不能是虚函数
    D. 静态成员函数不能直接访问非静态成员

  38. 实现运行时的多态性采用: 【正确答案: d】
    A. 重载函数
    B. 构造函数
    C. 析构函数
    D. 虚函数

  39. 关于const关键字说法错误的是: 【正确答案: d】
    A. const关键字可以修饰对象和成员函数
    B. const对象不能被修改
    C. const成员函数不能修改类数据成员
    D. const可以用于说明类

  40. 下面关于友元的描述中,错误的是 【正确答案: d】
    A. 友元函数可以直接访问该类的私有成员
    B. 一个类的友元类中的所有成员函数都是这个类的友元函数
    C. 利用友元可以提高程序的运行效率,但却破坏了封装性
    D.友元关系不能被继承,是双向可交换的

  41. 如果类A被说明为类B的友元,则 【正确答案: C】
    A. 类A的成员既是类B的成员

    B. 类B的成员既是类A的成员

    C. 类A的成员函数可以访问类B的所有成员

    D. 类B的成员函数可以访问类A的所有成员

  42. C++中不能被重载的一组运算符是 【正确答案: a】
    A. :: ?: . sizeof
    B. ?: . sizeof ++ ->
    C. :: ?: new delete
    D.++ – ?: sizeof

  43. 下列各类函数中,不是类的成员函数的是: 【正确答案: c】
    A. 构造函数
    B. 析构函数
    C. 友元函数
    D. 拷贝构造函数

  44. 定义析构函数时应该注意 【正确答案: c】
    A. 其名与类名完全相同
    B. 返回类型是void类型
    C. 无形参,也不可重载
    D. 函数体必须有delete语句

  45. 考虑函数原型void test(int a,int b=7,char ch=‘*’),下面函数调用中,属于不合法调用的是:正确答案: c
    A. test(5);
    B. test(5,8);
    C. test(6,‘#’);
    D. test(0,0,‘*’);

  46. 下列说明中const char*ptr=“hello”;其中ptr应该是: 【正确答案: c】

    A. 指向字符常量的指针

    B. 指向字符的常量指针

    C. 指向字符串常量的指针

    D. 指向字符串的常量指针

  47. 已知print函数是一个类的常成员函数,它无返回值,下列表示中,正确的是 【正确答案: a】
    A. void print() const;
    B. const void print();
    C. void const print();
    D. void print(const);

  48. 作用域运算符“::”的功能是: 【正确答案: b】

    A. 标识作用域的级别的

    B. 指出作用域的范围的

    C. 给定作用域的大小的

    D. 标识成员是属于哪个类的

  49. 在公有继承的情况下,基类非私有成员在派生类中的访问权限 【正确答案: D】。
    A. 受限制

    B. 受保护

    C. 不受保护

    D. 保持不变

  50. 若有以下说明和语句:

    struct worker

    {

    ​ int no;

    ​ char ﹡name;

    }work, ﹡p=&work;

    则以下引用方式不正确的是 【正确答案: a】。

    A. work->no

    B. work.no

    C. (﹡p).no

    D. p->no

  51. 保护继承时,基类的 【正确答案: C】在派生类中成为保护成员,不能通过派生类的对象直接访问。

    A. 任何成员

    B. 公有成员和私有成员

    C. 公有成员和保护成员

    D. 私有成员

  52. 假定AB为一个类,则执行AB a(2),b[3],*p[4]; 语句时调用该类的构造函数的次数是 【正确答案: b】
    A. 3
    B. 4
    C. 5
    D. 9

  53. 保护派生时,基类的公有成员成为派生类的公有成员;保护成员成为派生类的保护成员,私有成员成为派生类的保护成员。

    正确答案:错误

    正确

    错误

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只可爱的小猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值