一、选择题
1、下列的各类函数中,不是类的成员函数(    )。
A) 构造函数    B) 析构函数    C) 友元函数    D) 拷贝初始化构造函数
2、已知: int n=10;下列表示引用的方法中,正确的是(  )。
A) int &r;    B) int &r=10;    C) int &r=n;    D) int *r=&n;
3、下列关于析构函数的说法,正确的是(    ) 
A) 其名与类名完全相同          B) 返回类型是void类型 
C) 函数体中必须有delete语句    D) 无形参,不可重载
4、已知函数原型:void fun(int a,int b=7,char z='*'); 则下面函数调用中不合法的为(  )。 
A) fun(5);      B) fun(5,8);      C) fun(5,'#');      D) fun(0,0,'*');;
5、类A是类B的友元,类B是类C的友元,则以下说法正确的是(  )。
A) 类B是类A的友元        B) 类C是类A的友元
C) 类A是类C的友元        D) 以上都不对
6、关于对象成员的构造函数的调用顺序,说法正确的是(  )。
A)与它们在类中说明顺序相同
B)与析构函数的调用顺序相同
C)与它们在成员初始化列表中给出的顺序相同
D)以上说法都不对
7、以下关于内联函数的说法正确的是(  )
A)类的内联函数必须在类体外用关键字inline定义
B)类的内联函数必须在类体内定义
C)编译时将内联函数的目标代码插入每个调用该函数的地方
D)运行时将内联函数的目标代码插入每个调用该函数的地方
8、在有同名全局变量和局部变量时,可以用(  )提供对全局变量的访问。
A)类运算符    B)域运算符    C) 重载      D)引用
9、假定x为一个类,执行X  a[3],*p[2];语句时会自动调用该类的构造函数(    )次。
A) 2          B) 3          C) 4          D)5
10、下列关于new运算符的描述中,错误的是(  )。
A) 可以new运算符来动态创建对象和对象数组 
B) 使用new运算符创建的对象或对象数组,可以使用运算符delete删除
C) 使用new运算符创建对象时要调用构造函数 
D) 使用new运算符调用对象数组时不允许指定初始值
11、下面对静态数据成员的描述中,正确的是(    )
A)类的每个对象都有自己的静态数据成员
B)静态数据成员是类的所有对象共享的数据
C)类的不同对象有不同的静态数据成员值
D)静态数据成员不能通过类的对象调用
12、如果一个类至少有一个纯虚函数,那么就称该类为(  )。
A)抽象类      B)纯基类    C)派生类      D)虚类
13、若myclass类定义了拷贝构造函数和带一个整型参数的构造函数,还重载了赋值运算符,则语句 myclass obj = 100;将会(  )
A) 调用赋值运算符重载函数    B) 调用带一个整型参数的构造函数
C) 调用拷贝构造函数          D) 引起编译错误
14、下列哪一种情况不会调用拷贝构造函数 (  ) 
A)用派生类的对象去初始化基类对象时
B)将类的一个对象赋值给该类的另一个对象时 
C)函数的形参是类的对象,调用该函数将实参传给形参时
D)函数的返回值是类的对象,函数执行返回语句时
15、下列关于this指针的说法正确的是(      ) 
A)在类的非静态函数中this指针指向调用该函数的对象 
B)this指针是指向类的函数成员的指针
C)this指针是指向虚函数表的指针
D)this指针存在于每个函数之中
16、运算符的重载是对已有的运算符赋予多重含义,以下说法正确的是(  )。 
A) 可以对基本类型(如int 类型)的数据,重新定义“+”运算符的含义 
B) 可以改变一个已有运算符的优先级和操作数个数
C) 只能重载C++中已经有的运算符,不能定义新运算符
D) C++中已经有的所有运算符都可以重载
17、若一个类的构造函数为 A(int aa, int bb){a=aa++;b=a*bb++;} ,则执行 Ax(4,5); 语句后,
x.a 和 x.b 的值分别为 (  ) 。 
A) 4 和 5  B) 5 和 4    C)  4 和 20    D) 20 和 5
18、在c++中下列声明之间有(  )不同。 
const int * ptr1=#   
int * const ptr2=# 
A)    不能用ptr1改变常整数的内容,然而可以用ptr2改变它指向的整数的内容
B)    不能用ptr2改变常整数的内容,然而可以用ptr1改变它指向的整数的内容
B) 不能用ptr2改变常整数的内容,也不能用ptr1改变它指向的整数的内容
C) 没有不同
19、建立派生类对象时,3种构造函数分别是C(成员对象的构造函数)、J(基类的构造函数)、D(派生类的构造函数),这3种构造函数的调用顺序为(    )。
A) CJD    B) JCD    C) DJC    D) DCJ
20、在公有派生情况下,有关派生类对象和基类对象关系的叙述不正确的是(  )。
A) 派生类的对象可以赋给基类的对象
B) 派生类的对象可以初始化基类的引用
C) 派生类的对象可以直接访问基类中的成员 
D) 派生类的对象的地址可以赋给指向基类的指针
二、写程序运行结果
1、请写出以下程序的运行结果。
#include <iostream>
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( );
}
2、请写出以下程序的运行结果。
#include<iostream>
using namespace std;
class MyClass
{  public: 
MyClass(int i=0) { n=i; cout<<n;}
MyClass(const MyClass &x) { n=x.n;  cout<<n;}
MyClass& operator=(const MyClass &x) { n=x.n; cout<<n; return *this;} 
~MyClass(){cout<<'#';}
private:
    int n;
}; 
int main( )
{  MyClass obj1, obj2(2), obj3(obj1);
obj1=obj2;
return 0; 
}
3、请写出以下程序的运行结果。
#include <iostream.h>
class B;
class A
{ public:
A(int i) { a=i; } 
friend int Fun(A &f1, B &f2);
private:
int a;
};
class B
{ public:
B(int i) { b=i; } 
friend int Fun(A &f1, B &f2);
private:
int b;
}; 
int Fun(A &f1,B &f2) { return (f1.a+f2.b)* (f1.a-f2.b); } 
void main( ) {  A n1(10); B n2(8);  cout<<Fun(n1,n2)<<endl; }
4、请写出以下程序的运行结果。
#include<iostream>
using namespace std;
class Complex
{  private: double real, imag;
            static int total; 
  public:  Complex( double r=0.0,  double i=0.0 ) { real=r; imag=i; total++; }
            int getTotal( ) { return total;  }
            ~Complex() { total--; }
};
int Complex::total=0; 
int main( )
{  Complex a(1,2),b,*p;
  p=new Complex[10];
  cout<&Total()<<endl;
  delete [ ]p;
  cout<&Total()<<endl;
  return 0;
}
三、程序填空题
1、以下程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。
#include<iostream>
using namespace std;
int main() 
{ float x, max, min;
  cin>>x;
max=min=x;
while(  ①  ) 
{ if(x>max) max=x;
if(  ②  ) min=x;
cin>>x;
cout<< "\nmax=">> max >> "\nmin="<< min << endl;
}
2、以下程序计算两点之间的距离,请将之补充完整。
#include<iostream>

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