全部知识点
下列不属于C++规定的类继承方式是( )。
有如下程序:
#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;
}运行时的输出结果是( )。
下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“<
有如下定义:
int a[5]= 1,3,5,7,9),* p=a;
下列表达式中不能得到数值5的是( )。
已知类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];
则执行这个程序段的输出是( )。
已知类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;
}
}
};其中横线处应为下标访问运算符[]的重载函数的函数头,横线处应填入 的代码是( )。
类Base及其派生类Derived的定义如下:
class Base {
private :
int a ;
public :
int b ;
friend class Derived ;
} ;
class Derived : public Base {
public :
void foo( ) {
a = 0;//①
b = 0;//②
}
} ;则下列说法正确的是( )。
已知类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( );
运行这个程序段的输出是( )。
已知类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函数的输出是( )。
已知类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函数的输出是( )。
已知类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;
}运行这个程序段的输出是( )。
已知类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的复制构造函数的调用次数是 ( )。
有如下输出语句:
cout<<setw(5)<<fixed<<setprecigion(3)<<3.1415926;
此语句的输出结果是( )。
已知类模板Test定义如下:
template<typename T1,typename T2>
class Test{
public:
void foo(T2 t);
};则以下针对foo函数的类外定义中语法正确的是( )。
已知类CC以成员函数方式重载了二元运算符*,c1和c2是CC类的 两个对象,则下列对该运算符的调用中错误的是( )。
已知类Base和类Derived的定义如下:
class Base {
int n ;
public :
Base ( int d ) : n( d ) { }
} ;
class Derived : public Base {
public :
______________
} ;其中横线处应为类Derived的构造函数的定义。在下列构造函数的定义 中,正确的是( )。
已知类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 ;下列说法中正确的是( )。
已知函数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;
运行这个程序段的输出是( )。
有如下程序段:
int*a=new int[2]; a[0]=0; a[1]=1; int**b=&a: cout<<**b;
运行这个程序段将输出( )。
有如下程序段:
int i = 2;
do{
i *= i;
cout<<'#';
if(i>1000)break;
}while(1) ;运行这个程序段时,输出字符‘#’的个数是( )。