全部知识点

第7701题

下列不属于C++规定的类继承方式是( )。

第7702题

有如下程序:

#include <iostream>
using namespace std;
class GA{
public:
    virtual int f(){return 1;}
};
class GB: public GA{
public:
    virtual int f(){return 2;}
};
void show(GA g){cout<<g.f();}
void display(GA &g){cout<<g.f();}
int main(){
    GA a; show(a); display(a);
    GB b; show(b); display(b);
    Return 0;
}

运行时的输出结果是( )。

第7703题

下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“<

第7704题

有如下定义: 

int a[5]= 1,3,5,7,9),* p=a; 

下列表达式中不能得到数值5的是( )。

第7705题

已知类Array的定义如下:

class Array {
public :
    int data[ 2 ];
    Array( int n = 0 ) {
        int start ;
        if ( n <= 1 ) start = n - 1; else start = n;
        data[ 0 ] = start ;
        data[ 1 ] = start + 1 ;
    }
};

且有如下程序段:

Array arr(2);
cout<<arr.data[0]<<arr.data[1];

则执行这个程序段的输出是( )。

第7706题

已知类Time的定义如下:

class Time { //时间类
private:
    int hour , minute , second ;//时、分、秒
public :
    Time ( int h , int m , int s ) : hour( h ), minute( m ), second( s ) { }
    ____________{
        switch ( index ) {
            case 0 :
                return hour;
            case 1:
                return minute;
            default:
                return second;
        }
    }
};

其中横线处应为下标访问运算符[]的重载函数的函数头,横线处应填入 的代码是( )。

第7707题

类Base及其派生类Derived的定义如下:

class Base {
private :
    int a ;
public :
    int b ;
    friend class Derived ;
} ;
class Derived : public Base {
public :
    void foo( ) {
        a = 0;//①
        b = 0;//②
    }
} ;

则下列说法正确的是( )。

第7708题

已知类Base、Middle和Derived的定义如下:

class Base {
public :
    virtual void foo ( ) { cout << 'a'; }
} ;
class Middle : public Base {
public :
    void foo ( ) { cout << 'b'; }
} ;
class Derived : public Middle {
public :
    void foo ( ) { cout << 'c'; }
} ;

且有如下程序段:

Base * p1;
Middle * p2;
Derived d;
p1 = &d;
p1 -> foo( );
p2 = &d;
p2 -> foo( );

运行这个程序段的输出是( )。

第7709题

已知类AA和BB的定义如下:

class AA
{
public:
    AA(){cout<<'0';}
    ~AA(){cout<<'1';}
};
class BB:public AA
{
public:
    BB(){cout<<'2';}
    ~BB(){cout<<'3';}
};

且有如下主函数定义:

int main(){
    BB b;
    return 0;
}

运行这个main函数的输出是( )。

第7710题

已知类CC和函数test的定义如下:

class CC {
public :
    CC( ) { cout << '1'; }
    ~CC( ) { cout << '0'; }
};
void test ( CC c ) { cout << '2'; }

且有如下main函数:

int main(){
    CC c;
    test(c);
    return 0;
}

运行这个main函数的输出是( )。

第7711题

已知类Test的定义如下:

class Test{
private :
    static int num ;
public :
    void print ( int num ) {
        cout << ++ num ;
        cout << ++ this -> num;
    }
};
int Test::num=0;

且有如下程序段:

int main(){
    Test t1,t2;
    t1.print(0);
    t2.print(1);
    return 0;
}

运行这个程序段的输出是( )。

第7712题

已知类MyClass的定义如下:

class MyClass {
private :
    int num ;
public :
    MyClass ( int d ) : num ( d ) { }
    MyClass ( const MyClass& original ) : num ( original . num ) { }
    friend void print ( MyClass c ) { cout << c.num }
} ;

且有如下程序段:

MyClass c(5) ;
MyClass *p1;
p1=&c;
print(*p1) ;
print(c) ;

运行这个程序段的过程中,对类MyClass的复制构造函数的调用次数是 ( )。

第7713题

有如下输出语句:

cout<<setw(5)<<fixed<<setprecigion(3)<<3.1415926;

此语句的输出结果是( )。

第7714题

已知类模板Test定义如下:

template<typename T1,typename T2>
class Test{
public:
    void foo(T2 t);
};

则以下针对foo函数的类外定义中语法正确的是( )。

第7715题

已知类CC以成员函数方式重载了二元运算符*,c1和c2是CC类的 两个对象,则下列对该运算符的调用中错误的是( )。

第7716题

已知类Base和类Derived的定义如下:

class Base {
    int n ;
public :
    Base ( int d ) : n( d ) { }
} ;
class Derived : public Base {
public :
    ______________
} ;

其中横线处应为类Derived的构造函数的定义。在下列构造函数的定义 中,正确的是( )。

第7717题

已知类MyClass的定义如下:

# include<iostream>
using namespace std;
class MyClass {
private :
    static int static_data;
    const int const_data;
public:
    MyClass ( int d ) : const_data ( d ) { }
    static void foo1 ( ) {
        cout << const_data ; //①
    }
    void foo2 ( ) const {
        cout << static_data ; //②
    }
};
int MyClass :: static_data = 0 ;

下列说法中正确的是( )。

第7718题

已知函数foo定义如下:

void foo ( int a,int&b,int*c) {
    a++; b++; (*c) ++;
}

且有如下程序段:

int a=1,b=2,c=3;
foo (a,b,&c) ;
cout<<a<<b<<c;

运行这个程序段的输出是( )。

第7719题

有如下程序段:

int*a=new int[2];
a[0]=0;
a[1]=1;
int**b=&a:
cout<<**b;

运行这个程序段将输出( )。

第7720题

有如下程序段:

int i = 2;
do{
    i *= i;
    cout<<'#';
    if(i>1000)break;
}while(1) ;

运行这个程序段时,输出字符‘#’的个数是( )。