C++复习题(面向对象程序设计)

##C++复习题(面向对象程序设计)

一、选择题

  1. C++语言属于( C )。
    A) 自然语言 B) 机器语言 C)面向对象语言 D) 汇编语言
  2. 下面选项中不属于面向对象程序设计特征的是( C ) 。
    A)继承性 B)多态性 C)相似性 D)封装性
  3. 可用作C++语言用户标识符的一组标识符是( B )。
    A) void define +WORD B) a3_b3 _123 YN
    C) for -abc Case D) 2a DO sizeof
  4. 假定一个二维数组的定义语句为“int a[3][4]={ {3,4},{2,8,6}};”,则元素a[2][1]的值为( A )。
    A) 0 B) 4 C) 8 D) 6
  5. 下列情况中,哪一种情况不会调用拷贝构造函数 ( B )
    A)用派生类的对象去初始化基类对象时
    B)将类的一个对象赋值给该类的另一个对象时
    C)函数的形参是类的对象,调用函数进行形参和实参结合时
    D)函数的返回值是类的对象,函数执行返回调用者时
  6. 以下哪一关键字可用于重载函数的区分( C )
    A)extern B)static C)const D)virtual
  7. 下列有关数组的叙述中,正确的是( B )
    A)C++中数组的存储方式为列优先存储
    B)数组名可以作为实参赋值给指针类型的形参
    C)数组下标索引从1开始,至数组长度n结束
    D)数组指针的语法形式为:类型名 *数组名[下标表达式];
  8. 下列有关继承和派生的叙述中,正确的是( C )
    A)派生类不能访问通过私有继承的基类的保护成员
    B)多继承的虚基类不能够实例化
    C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数
    D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现
  9. 实现运行时多态的机制是( A )
    A)虚函数 B)重载函数 C)静态函数 D)模版函数
  10. 若有下面的函数调用:
    fun(a+b, 3, max(n-1, b));
    其中实参的个数是( A )
    A)3 B)4 C)5 D)6
  11. 下列关于this指针的说法正确的是( B )
    A)this指针存在于每个函数之中
    B)在类的非静态函数中this指针指向调用该函数的对象
    C)this指针是指向虚函数表的指针
    D)this指针是指向类的函数成员的指针
  12. 在下列关于C++函数的叙述中,正确的是( C )
    A)每个函数至少要有一个参数 B)每个函数都必须返回一个值
    C)函数在被调用之前必须先声明 D)函数不能自己调用自己
  13. 下列运算符中,不能重载的是 ( C )
    A)&& B)!= C). D)->
  14. 下面程序的输出结果是( B )
    #include
    using namespace std;
    int i = 0;
    int fun(int n)
    {
    static int a = 2;
    a++;
    return a+n;
    }
    void main()
    {
    int k = 5;
    {
    int i = 2;
    k += fun(i);
    }
    k += fun(i);
    cout << k;
    }
    A)13 B)14 C)15 D)16
  15. 下面的程序段的运行结果为( D )
    char s
    tr[] = “job”, *p = str;
    cout << *(p+2) << endl;
    A)98 B)无输出结果 C)字符’b’的地址 D)字符’b’
  16. 下面程序的输出结果是( C )
    #include
    using namespace std;
    class A
    {
    public:
    A (int i) { x = i; }
    void dispa () { cout << x << “,”; }
    private :
    int x ;
    };
    class B : public A
    {
    public:
    B(int i) : A(i+10) { x = i; }
    void dispb() { dispa(); cout << x << endl; }
    private :
    int x ;
    };
    void main()
    {
    B b(2);
    b.dispb();
    }
    A)10,2 B)12,10 C)12,2 D)2,2
  17. 下面程序的输出结果是( C )
    #include
    using namespace std;
    class Base
    {
    public:
    Base(int i) { cout << i; }
    ~Base () { }
    };
    class Base1: virtual public Base
    {
    public:
    Base1(int i, int j=0) : Base(j) { cout << i; }
    ~Base1() {}
    };
    class Base2: virtual public Base
    {
    public:
    Base2(int i, int j=0) : Base(j) { cout << i; }
    ~Base2() {}
    };
    class Derived : public Base2, public Base1
    {
    public:
    Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1©,
    Base2(d), Base(a)
    { cout << b; }
    private:
    Base2 mem2;
    Base1 mem1;
    };
    void main() { Derived objD (1, 2, 3, 4); }
    A)134122 B)123412 C)14302012 D)143212
  18. 下面程序的输出结果是( C )
    #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+”; }
    };
    void main() { Derived d; Base *p = &d; p->f(); p->g(); }
    A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+
  19. 下面程序的输出结果是( C )
    #include
    using namespace std;
    class Sample
    {
    friend long fun (Sample s)
    {
    if (s.x < 2) return 1;
    return s.x * fun(Sample(s.x-1));
    }
    public:
    Sample (long a) { x = a; }
    private:
    long x;
    };
    void main()
    {
    int sum = 0;
    for (int i=0; i<4; i++)
    {
    sum += fun(Sample(i));
    }
    cout << sum;
    }A)12 B)16 C)10 D)34
  20. 以下程序的输出结果是:( D )
    #include
    using namespace std;
    int fun(char *s)
    { char *p=s;
    while (*p!=’\0’) p++;
    return (p-s);
    }
    void main(){
    cout<<fun(“abc”)<<endl;
    }
    A.0 B. 1 C. 2 D. 3
  21. 有如下程序段:
    int i=1;
    while(1)
    {
    i++;
    if (i10) break;
    if(i%2
    0) cout<<’’;
    }
    执行这个程序段输出字符
    的个数是( C )
    A. 10 B. 3 C. 4 D.5
  22. 下列关于虚基类的描述中,错误的是( C )
    A. 使用虚基类可以消除由多继承产生的二义性
    B. 构造派生类对象时,虚基类的构造函数只被调用一次
    C. 声明 class B:virtual public A 说明类B为虚基类
    D. 建立派生类对象时,首先调用虚基类的构造函数
  23. 有下类定义
    class A {
    char *a;
    public:
    A():a(0){}
    A(char *aa) {//把aa所指字符串拷贝到a所指向的存储空间
    a=___________________;
    strcpy(a,aa);
    ~A() {delete [] a;}
    };
    正确的选择是( A )
    A. new char[strlen(aa)+1] B. char[strlen(aa)+1]
    C.
  • 24
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值