D.类A的成员函数可以访问类B的对象的任何成员 9.下列说法中正确的是( )
A.类定义中只能说明函数成员的函数头,不能定义函数体 B.类中的函数成员可以在类体中定义,也可以在类体之外定义 C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中 D.在类体之外定义的函数成员不能操作该类的私有数据成员 10.在C++中实现封装是借助于( ) A.枚举 B.类
C.数组 D.函数
11.假定AB为一个类,则执行 “AB a(2), b[3], *p[4];”语句时共调用该类构造函数的次数为( ) A. 3 B. 4 C. 5 D. 9 12.假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete []px;”语句时共调用该类析构函数的次数为( ) A. 0 B. 1 C. n D. n+1
13.假定一个类的构造函数为 “A(int aa, int bb) {a=aa; b=aa*bb;}”,则执行 “Ax(4,5);”语句后,x.a和x.b的值分别为( ) A. 4和5 B. 5和4 C. 4和20 D. 20和5 14.构造函数不具备的特征是 ( ) A.构造函数的函数名与类名相同 B.构造函数可以重载
C.构造函数可以设置默认参数 D.构造函数必须指定类型说明
15.C++ 对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是( ) A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念
16.对于任一个类,用户所能定义的构造函数的个数至多为( ) A.0 C.2
B.1 D.任意个
17.假定AA为一个类,a()为该类公有的函数成员,x为指向该类对象的指针,则访问x对象中函数成员a()的格式为( ) A.x.a C.x->a
18.若Sample类中的一个成员函数说明如下:
void set(Sample& a),则Sample& a的含义是( ) A.指向类Sample的名为a的指针
B.a是类Sample的对象引用,用来作函数Set()的形参 C.将a的地址赋给变量Set
D. 将Sample的对象a作为函数Set()的形参
B.x.a() D.x->a()
19.类MyA的拷贝初始化构造函数是 ( ) A. MyA()
B. MyA(MyA*)
C. MyA(MyA&) D. MyA(MyA) 20.定义析构函数时,应该注意( )。
A.其名与类名完全相同 B.返回类型是void类型
C.无形参,也不可重载 D.函数体中必须有delete语句
二、填空题
1.类是用户定义的类型,具有类类型的变量称作_______。 2.当建立_______,程序自动调用该类的构造函数。 4. 每个对象都是所属类的一个____________
3.定义重载构造函数时,应在_______上有所不同。
5.当一个成员函数被调用时,该成员函数的_______指向调用它的对象。 6.拷贝构造函数通过_______使用引用来初始化创建中的对象。 7.类的私有成员只能被它的成员函数和_________访问。
8.通过C++语言中的_________机制,可以从现存类中构建其子类。
9.封装要求一个对象应具备明确的功能,并具有_________以便和其它对象相互作用。 10.在删除一个动态对象时,将自动调用该动态对象所属类的_________函数。
11.假定用户没有给一个名为AB的类定义析构函数,则系统自动给出的缺省析构函数定义为___________
12、局部对象、静态局部对象和全局对象中,在同一程序中________生存期最短;this指针始终指向当前正在发出成员函数调用命令的________。
三、程序填空
1.在下面程序的底画线处填上适当的字句,使该程序执行结果为10。 #include
int X; public:
①________∥为X置值 ②________∥取X值
};
void main() {
base test; test.init(3);
cout< 2.在下列程序的底画线处填上适当的字句,完成类中成员函数的定义。 #include ①________ int same_color(line a,box b); void set_color(int c){color=c;} void define_box(int x1,int y1,int x2,int y2){upx=x1;upy=y1;} }; class line { private: int color;int startx,starty;int len; public: ②________ int same_color(line a,box b); void set_color(int c){color=c;} void define_line(int x,int y){startx=x;} }; int same_color(line a,box b) { if(a.color==b.color) return 1; return 0; } int main() { line L; box B; L.set_color(2); B.set_color(3); cout< 3.在下面程序段横线处填上适当的内容。 class A{ _①_______ int n; public: A(int nn=0):n(nn){ if(n==0)a=0; else a=new int[n]; } ②________//定义析构函数,释放动态数组空间 }; 4、在下面的横线处填上适当内容,使程序完整。 # include private: float x,y; public: loc(_①_______) { x=x1; y=y1; } float getx( ){return x;} float gety( ){return y;} ②________ float dis(loc&,loc&); }; float dis(loc&a,loc&b) { float dx=a.x-b.x; float dy=a.y-b.y; return sqrt(dx*dx+dy*dy); } void main( ) { loc p1(3.5,4.5),p2(5.5,6.5); float d=dis(p1,p2); cout<<\ } 四、程序阅读,写出下列程序的运行结果 1、# include void init(int=0,int=0); void valueX(int val){X=val;} int valueX( ){return X;} void valueY(int val){Y=val;} int valueY( ){return Y;} }; void Location::init(int initX,int initY) { X=initX; Y=initY; } void main( ) { Location A,B; A.init( ); cout< cout< cout< 2、#include int number; void set(int i); }; int number=3; void MyClass::set (int i) { number=i; } void main() { MyClass my1; int number=10; my1.set(5); cout< cout< #include A(double xx=0, double yy=0) { X=xx; Y=yy; cout<<″构造函数被调用(″< A(A &p) { X=p.X; Y=p.Y; } }; A f() { A a(1,2); return a; } void main() { A a(4,5); A b(a); b = f(); } 4、 #include private: int X,Y; public: A() { X=Y=0; cout<<\ } A(int xx,int yy) { 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++清考资料类和对象(3)在线全文阅读。
相关推荐: