一.选择题1.能提供封装的C++的下列关键字是(C)A.whileB. unionC. classD. for2.在下面所列项中,不是面向对象的特点的是(C)A. 多面性B. 抽象性和封装性C. 多线程和多任务D. 继承性3.下面选项中,对A类的构函数的正确定义是(A)A. A::~A( )B. void ~A::A(参数)C.~A::A(参数)D. void ~A::A( )4.下面有关构造函数的不正确说法是(B)A. 构造函数可以用来实现所有成员变量的初始化B. 构造函数不是类的成员函数C. 当生成类的实例时,自动调用构造函数进行初始化D. 构造函数用来分配对象所需的内存5.有关析构函数的不正确说法是(C)A. 析构函数在对象生存期结束时自动被调用B. 析构函数不得指定参数C. 定义析构函数时,可以指定返回类型为voidD. 析构函数名与类名相同6.下面有关类说法错误的是(C)A. 一个类可以有多个析构函数B. 一个类只能有一个析构函数C. 可以给析构函数指定参数D. 一个类中可以说明具有类类型的数据成员7.下面有关构造函数和new运算符关系的正确说法是(D)A. new运算符不调用构造函数B. 构造函数一定调用new运算符C. 当生成类的实例时,先调用new运算符,然后构造函数进行初始化D. 当用new运算符动态产生类的对象时,new运算符也自动调用构造函数8简单成员函数的声明一般不含关键字(B)A. doubleB. staticC. floatD. int9.已知:print( )函数是一个类的常成员函数,它无返回值,下面表示正确的项是(A)A.void print( )constB. const void print( )C. void const print( )D. void print(const)10.下列各类函数中,不是类的成员函数的是(C)A.构造函数B. 析构函数C. 友元函数D. 复制初始化构造函数11.对友元函数的描述正确的是(A)A.一个类的友元函数是在该类中说明的一个函数B.一个类的友元函数是该类的一个成员C.友元函数只允许访问该类对象的私有成员D.友元函数不允许访问该类的私有成员12.保证编译器正确调用成员函数的规则是(D)A.赋值兼容B. 继承C. 作用域D. 支配13.下面叙述不正确的是(A)A.基类的保护成员在派生类中仍然是保护的B.基类的保护成员在公有派生类中仍然是保护的C.基类的保护成员在私有派生类中是私有的D.对基类成员的访问必须是无二义性的
14.下面叙述不正确的是(C)
A.成员的访问能力在私有派生类中和公有派生类中是不同的B.基类的私有成员在公有派生类中不可访问C.赋值兼容规则不适用于多重继承的组合D.公有基类成员在保护派生中是保护的15.下面叙述不正确的是(D)A.派生类可以有自己的构造函数B. 派生类继承基类的构造函数C. 派生类继承基类的析构函数D. 派生类只能继承基类的一个构造函数16.下面有关类模板叙述不正确的选项是(A)A.不可以通过一个类来派生类模板B. 可以从一个类模板派生出一个新的类模板C. 类模板支持单一继承D. 类模板可以有多个参数17.下面有关类模版叙述不正确的是(B)A.可以使用派生B. 可以使用多个析构函数C. 可以又多个析构函数D. 可以有多个参数18.在构造向量时,不正确的叙述是(D)A.可以使用基本数据类型B. 可以使用类C. 可以使用向量D. 不可以使用容器19.对一个向量来说,不正确的叙述是(D)A.向量的长度可变B.向量有返回无需再次分配内存就能容纳对象个数的成员函数capacity( )C.如果数量已满,当增加一个元素时,向量成员函数capacity( )的长度自动增加D.如果数量已满,当需要增加一个元素是capacity( )的长度每次自动增加一个20.要是一个类成为抽象类,这个累应具有的条件是(A)A.至少有一个纯虚函数B. 至少有一个虚函数C. 只含有一个纯虚函数D. 只含有一个虚函数21.下面是基类中的成员函数形式,其中纯虚函数的是(B)A.virtual void f (void)B. virtual void f (void )=0C. void f (void)=0D. virtual void f (void){}
二.程序填空AB第1题:#includeUsing namespace std;Class point{int x,y;Publice ;Point( ):x(0),y(0){}Point(int a):x(a){y=0;}Point(int a,int b):x(a),y(b){};Int getx( ) {return x;}Int getx( ) {return y;}
}Void main( ){/*******************SPACE*******************/
/*******************SPACE*******************/ 【?】For(int i=0; i<3;i++)Cout<<"b["<For(int i=0; i<3;i++)Cout<<"c["<}答案1.point a[3];2.point b[3]={1,2,3};3.point c[3]={point(1,2),point(3,4),point(5,6)};B第2题:...Class point{
private;Int x,y;Publice;Point(int a,int b) {x=a; y=b;cout<<”point...”<Void showxy( ){cout<<”x=”<
{Private;Int h, w public;Rect angle(int a,int b,int h, int w):point (a,b)//构造函//数初始化列表{H=h;W=w ; cout<<”rectangle...”<V oid show( ) {cout<<”H=”<};V oid main( ){Rectangle r1(3,4,5,6);//派生对象调用基类的成员函数showxy( )/*******************SPACE*******************/ 【?】//派生对象调用基类的成员函数show( )/*******************SPACE*******************/ 【?】}1.r1.Showxy();2.r1.Show();A第3题:#includeUsing namespace std;Class A{int n;Public;A(int i):n(i){ }Int add(int a){return n+a;}};V oid main( ){/*******************SPACE*******************/ 【?】//指向类A的成员函数指针A x(10);P=A::add;Cout<<(x.*p)(15)<A*q=&;//类A对象x的指针/*******************SPACE*******************/ Cout<<【?】<}答案1.int (A::*p)(int);2.(q->*p)(15)B第3题:#includeUsing namespace std;Class point{Float x,y;Publice;Void display( )Void setxy(float a,float b);Float getx( );Float getx( );};//定义成员函数void display( )/*******************SPACE*******************/ 【?】{
Cout<}Void point::setxy(float a,float b){ x=a;y=b }Float point::getx( ){return x;}Float point::gety( ){return y;}Void main( ){Point a;a.setxy(3.5,5.8);B.display( );Point &ra=a;//用ra调用display输出x,y的值;/*******************SPACE*******************/【?】Cout<}答案1.void Point::Display()2.ra.Display();三.程序改错A第1题:Class base{Int number;Sttic int a;Public:Void set(int i,int j);Static int geta( ){return a ;}/************FOUND**********/Static int geta( ){return number;}/************FOUND**********/Void show( ){cout<};1.static int getn(){return number;}错误:静态成员函数只允许访问静态成员变量,number不是静态成员变量2.void show(){cout<<","<B第1题:#includeClass point {Int x;Public:Void init(int a) {setx(a);}Int getx( ) {return x;}/************FOUND**********/Int setx(int a){x=a;}};Void main( ){/************FOUND**********/A.init(56);Cour<<”a.x”<}答案1.Setx应有返回值,int Setx(int a){x=a;return x;}2.A对象应该先定义,Point A=new Point( );AB第2题:#includeUsing namespace std;/************FOUND**********/Void sort (int x,int n){Int i,j,t;For (i=0;i/************FOUND**********/For (j=0;j/************FOUND**********/If(x[i]>[i+1]){T=x[j];X[j]=x[j+1];X[j+1]=t; }}Main( ){Int i,n,a[100];Printf(“please input the length of the array:\n”);Cin>>n;/************FOUND**********/Sort(n,a)Cout<<”output the sorted array:”<For(i=0;iCout<}答案1.void sort(int *x,int n)2.for(j=0;j
3.if(x[j]>x[j+1])4.sort(a,n);A第3题:#includeClass point{Int x;Public:Void init(int a){setx(a);}Int getx( ){return x;}};Void main( ){/************FOUND**********/A.init(56);Cout<<”A.”<}答案1.Setx应有返回值,int Setx(int a){x=a:return x;}2.A对象应该先定义,Point A=new point();B第3题:Class base{Int *p;Public;/************FOUND**********/Base(int a ){p=&a};/************FOUND**********/Int getx( ){return m;}};答案1.base(int a){p=&a;}2.m没有定义