资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,C+,习题讲解,第六章 类和对象,(,二,),一,.,选择题,1.,已知一个类,A,,(,C,)是指向类,A,成员函数的指针。假设类有三个成员函数,void f1(int),,,void f2(int),和,int a,。,A. A *P B. int A:*pc=&A:a,C. Void A:*pa D. A*pp,指向成员函数的指针格式如下:,(,:,*,)(,),其中的类型说明符是和成员函数的返回值类型是相同的。,2.,运算符,-*,的功能是(,A,),A.,使用对象指针通过指向成员的指针表示成员的运算符,B.,使用对象通过指向成员的指针表示成员的运算符,C.,用来表示指向对象指针的成员的运算符,D.,用来表示对象的成员的运算符,3,已知,f1(int),是类,A,的公有成员函数,p,是指向成员函数,f1(),的指针,采用(,B,)是正确的,P=f1,P=A:f1,P=A:f1(),P=f1(),正确格式应该是,指向函数的指针名类名:函数名,已知:,p,是一个指向类数据成员,m,的指针,,A1,是类的一个对象如果要给,m,赋值为,(,C,)是正确的,.,A,A1.P=5,A1-p=5,A1.*p=5,*A1.p=5,正确赋值格式应该是,对象名指针名数值,已知类中一个成员函数说明如下:,void set(A&a),,其中,A&a,的含义是(),指向类的指针为,a,a,将的地址值赋给变量,a,是类的对象引用,用来作为,set,()的参数,变量与,a,按位相与作为函数,set,()的参数,下列定义中(,B,)是定义指向数组的指针,P.,int *p5,int (*p)5,(int *)p5,int *p,指向数组的指针的定义格式如下:,类型说明符(指针名)大小,下列说明中,const char *ptr,,,ptr,应该是(),指向字符常量的指针指向字符的常量指针,指向字符串常量的指针指向字符串的常量指针,常量指针还分两种,其一是指向的地址值是常量,另一种指向的值是常量,已知,print(),函数是一个类的常成员函数,它无返回值,下列表达式中正确的是(),A,void print()const,const void print(),void constprint(),void print(const),常成员函数的定义格式如下:,类型说明符函数名(参数表),const,具有类型转换功能的构造函数,应该是(),不带参数的构造函数带有一个参数的构造函数,带有两个以上参数的构造函数默认构造函数,具有类型转换功能的构造函数只有一个参数,二判断题,指向对象的指针和指向类的成员函数的指针在表示形式,上是不相同的正确,指向类的成员函数的指针的表示形式如下,(,:,*,)(,),指向对象的指针表示形式如下,类名,*,指针名对象名,指向对象的指针与对象都可以作为函数参数,但是使用,前者比后者好些正确,使用前者可以实现传址调用,还不进行对象副本的复制,提,高运行效率,对象引用作为函数参数比用对象指针更方便正确,因为对象引用比对象指针更简单更直接,对象数组的元素是不同类的对象错误,定义对象数组的时候,前面要加类名,所以对象数组的元素,是属于同一个类的,指向对象数组的指针不一定必须指向数组首元素正确,一维对象指针数组的每个元素应该是某个类的对象的地,址值正确,一个能够更新的变量使用在一个不能被更新的环境中,是不破坏类型保护的,反之亦然错误,Const,用于变量时是可以改变,Const,的属性的,一个类的构造函数可以不包含对其子对象的初始化,错误,类的构造函数的功能就是用给定的值对对象进行初始化,三分析程序结果,输出结果是,starting:,default constructor called,default constructor called,default constructor called,Ending1:,Starting2:,Constructor:a=5,b=6,Constructor:a=7,b=8,Constructor:a=9,b=10,Ending 2:,Destructor called. a=9,b=10,Destructor called. a=7,b=8,Destructor called. a=5,b=6,Destructor called. a=3,b=4,Destructor called. a=1,b=2,2,输出结果是,Default constructor called,Default constructor called,Default constructor called,Default constructor called,Destructor called,Constructor1 called,Destructor called,Constructor2 called,Destructor called,X=0,y=0,X=5,y=0,X=2,y=3,Destructor called,Destructor called,Destructor called,输出结果是,Constructor,called.0,Constructor,called.5,Destructor called.5,5,Destructor called.5,4,输出结果是,Destructor called.5,5,Destructor called.5,5,输出结果是,Default constructor called,Constructor:real=6.8,image=0,Constructor:real=5.6,image=7.9,0+0i,6.8+0i,5.6+7.9i,Constructor:real=1.2,image=3.4,Constructor:real=5,image=0,Default constructor called,1.2+3.4i,5+0i,0+0i,6,输出结果是,18.2 19.2 20.2 21.2 22.2 23.2 24.2 25.2 26.2 27.2,第七章继承性和派生类,一选择题,下列关于赋值兼容规则的描述中错误的是(),赋值兼容规则在子类型情况下才可使用,公有继承下,派生类对象不可给基类对象赋值,公有继承下,派生类对象可给基类对象引用初始化,公有继承下,派生类对象的地址值可以赋给基类的对象,指针,规则是派生类对象可以赋值给基类的对象,派生类对象的地,址值可以赋给基类的对象指针,派生类对象可以用来给基类,对象引用进行初始化,前提是在公有继承条件下派生类是基,类的子类,关于多继承二义性的描述中错误的是(),一个派生类的两个基类中都有某个同名成员,在派生类,中对这个成员的访问可能出现二义性,解决二义性的最常用方法是用成员名的限定法,基类和派生类中同时出现的同名函数,也存在二义问题,一个派生类是从两个基类派生来的,而这两个基类又有,一个公共的基类,对该基类成员进行访问时,也可能出现二,义性问题,两点:派生类的多个基类中调用其同名成员时可能出现二义,性,派生类有共同基类时访问公共基类成员可能出现二义性,,解决的方法一般是成员名限定法,二判断题,在公有继承中,基类的公有成员和私有成员在派生类,中都是可见的错误,其中私有成员是不可见的,在私有继承中,基类中所有成员对派生类的对象都是不,可见的正确,基类的所有成员都不能被派生类多访问,在保护继承中,对于派生类的访问同于公有继承,而对,于派生类的对象的访问同于私有继承正确,保护继承的特点是:基类的所有公有成员和保护成员都作为,派生类的保护成员,并且只能被它的派生类成员函数或友员,访问,而不能为派生类的对象访问,派生类中至少包含了它的基类的所有成员,在这些成员,中可能有的不可访问正确,构造函数可以被继承错误,构造函数是不能被继承的,派生类中由基类说明的数据成员,应该由基类中的构造函数进行初始化,只要类继承了类,就可以说类是类的子类,错误,并不是错有的继承都可以成其子类关系,公有继承可以实现,子类型化,如果类型是类型的子类型,则类型必然适应于,类型正确,多继承情况下,派生类的构造函数中基类构造函数的,执行顺序取决于定义派生类时所指定的各基类的顺序正确,派生类构造函数执行顺序是先执行所有基类的构造函数,在,执行派生类本身的构造函数处于同一层的各基类构造函数,的执行顺序取决于定义派生类时指定的各基类顺序,单继承情况下,派生类中对基类成员的访问也会出现,二义性错误,单继承中对基类成员的访问不会出现二义性,虚基类可以解决多继承中公共基类在派生类中只产生,一个基类子对象的问题正确,引进虚基类后,派生类中的对象中只存在一个虚基类的,对象,三分析程序结果,输出结果是,(,),,,(,),输出结果是,(,),(,),,,(,),输出结果是,(,),输出结果是,D:display(),Pri1=4, Pri2=5,Pri4=6,Pri2=7,D:display(),Pri1=12, Pri2=9,Pri4=7,Pri2=8,5,输出结果是,D:display(),Pri1=, Pri2=,Pri4=6,Pri2=7,D:display(),Pri1=, Pri2=,Pri4=7,Pri2=8,第章多态性和虚函数,一选择题,下列函数中()是不能重载的,成员函数非成员函数析构函数,构造函数,构造函数和成员函数都可以重载,非成员函数也可以重载,,只有析构函数不可以重载,下列重载函数的描述中,()是错误的,重载函数中不允许使用默认参数,重载函数中编译系统根据参数表进行选择,不要使用重载函数来描述毫不相干的函数,构造函数重载将会给初始化带来多种方式,重载函数是允许使用默认参数的,下列关于运算符重载的描述中正确的是(),运算符重载可以改变操作数的个数,运算符重载可以改变优先级,运算符重载可以改变结合性,运算符重载不可以改变语法结构,重载运算符,不改变原运算符的优先级和结合性,也不可以,改变操作数个数和语法结构,运算符重载函数是(),成员函数友员函数内联函数,带默认参数的函数,运算符可以重载为类的成员函数和友员函数,关于虚函数的描述中,()是正确的,虚函数是一个,static,类型的成员函数,虚函数是一个非成员函数,基类中说明了虚函数后,派生类中可不必将其对应的函,数说明为虚函数,派生类的虚函数与基类的虚函数具有不同的参数个数,和类型,虚函数是成员函数但是是非,static,的,派生类中的虚函数与基,类的虚函数具有相同的参数个数,对应的参数类型相同,下列描述中,()是抽象类的特性,可以说明虚函数可以进行构造函数重载,可以定义友员函数不能说明对象,抽象类不能用来定义对象,可以定义对象指针和对象引用,二判断题,函数的参数个数和类型相同,只是返回值不同,这不是,重载正确,多数运算符可以重载,个别运算符不能重载,运算符重,载是通过函数定义实现的正确,对单目运算符重载为友员函数时,说明一个形参;重载,为成员函数时,不能显式说明形参正确,重载为成员函数时,不能再显式说明形参,重载为友员函数,时,有一个参数,虚函数用,virtuel,关键字说明成员函数正确,构造函数说明为虚函数没有意义正确,虚函数是通过引用和指针完成动态绑定,这样构造函数是不能,被调用的,抽象类是指一些没有说明对象的类错误,抽象类是不能用来说明对象的,但是没有说明对象的类,不,能称其为抽象类,三分析程序结果,输出结果是,B:show ()called.158,D:show()called.208,2.,输出结果是,D:virfun() called.,3,输出结果是,The A version A,The A version 1,The A version A,The A version 3,输出结果是,The A version A,The D info:4 version 1,The D info:100 version A,The D info:-25version 3,5,输出结果是,,,
展开阅读全文