欢迎来到天天文库
浏览记录
ID:62275986
大小:65.50 KB
页数:37页
时间:2021-04-25
《c++类和对象练习题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.....................最新资料整理推荐.....................第8章类与对象8.1知识要点1.掌握类与对象的概念和定义方法,掌握类成员的访问属性。2.掌握构造函数的概念、定义方法和使用方法。3.掌握析构函数的概念、定义方法和使用方法。4.掌握拷贝构造函数的概念、定义方法和使用方法。5.掌握包含对象成员的类构造函数的定义方法。6.掌握静态成员的概念、定义方法、作用和特点。7.掌握友元的概念、定义方法、作用和特点。8.掌握类模板的定义格式与使用方法。8.2典型例题分析与解答例题1:下列有关类的说法不正确的是()
2、。A.对象是类的一个实例B.任何一个对象只能属于一个具体的类C.一个类只能有一个对象D.类与对象的关系和数据类型与变量的关系相似答案:C分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。 例题2:下面()项是对构造函数和析构函数的正确定义。A.voidX::X(),voidX::~X()B.X::X(参数),X::~X()37.....................最新资料整理推荐.....................C.X::X(参数),X::~X(参数)D.voidX::X(参数),voidX:
3、:~X(参数)答案:B分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。 例题3:()的功能是对象进行初始化。A.析构函数B.数据成员C.构造函数D.静态成员函数答案:C分析:当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作; 例题4:下列表达方式正确的是()。A.classP{B.classP{public:public:intx=15;intx; voidshow(){cout<4、w(){cout<5、贝构造函数是一种成员函数D.拷贝构造函数的名字不能用类名答案:D分析:如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。 例题6:关于静态成员的描述中,()是错误的。A.静态成员可分为静态数据成员和静态成员函数B.静态数据成员定义后必须在类体内进行初始化C.静态数据成员初始化不使用其构造函数D.静态数据成员函数中不能直接引用非静态成员答案:B37.....................最新资料整理推荐...6、..................分析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。 例题7:关于友元的描述中,()是错误的。A.友元函数是成员函数,它被说明在类体内B.友元函数可直接访问类中的私有成员C.友元函数破坏封装性,使用时尽量少用D.友元类中的所有成员函数都是友元函数答案:A分析:7、友元函数是非成员函数,在类体内说明了,在类体外定义,定义和调用等同于一般的普通函数;由于它可以直接访问类的私有成员,因此破坏了类的封装性和隐藏性,尽量少用。 例题8:设有如下程序结构:classBox{…};voidmain(){BoxA,B,C;}该程序运行时调用(1)次构造函数;调用(2)次析构函数。37.....................最新资料整理推荐.....................答案:(1)3(2)3分析:每创建一个对象自动调用一次构造函数,在这里创建了A、B、C三个对象,所以共调用了三次构造函数;每释放一个对象,系8、统自动调用一次析构函数,A、B、C对象释放时,分别调用析构函数,所以析构函数共调用了三次。 例题9:设A为test类的对象且赋有初值,则语句testB
4、w(){cout<5、贝构造函数是一种成员函数D.拷贝构造函数的名字不能用类名答案:D分析:如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。 例题6:关于静态成员的描述中,()是错误的。A.静态成员可分为静态数据成员和静态成员函数B.静态数据成员定义后必须在类体内进行初始化C.静态数据成员初始化不使用其构造函数D.静态数据成员函数中不能直接引用非静态成员答案:B37.....................最新资料整理推荐...6、..................分析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。 例题7:关于友元的描述中,()是错误的。A.友元函数是成员函数,它被说明在类体内B.友元函数可直接访问类中的私有成员C.友元函数破坏封装性,使用时尽量少用D.友元类中的所有成员函数都是友元函数答案:A分析:7、友元函数是非成员函数,在类体内说明了,在类体外定义,定义和调用等同于一般的普通函数;由于它可以直接访问类的私有成员,因此破坏了类的封装性和隐藏性,尽量少用。 例题8:设有如下程序结构:classBox{…};voidmain(){BoxA,B,C;}该程序运行时调用(1)次构造函数;调用(2)次析构函数。37.....................最新资料整理推荐.....................答案:(1)3(2)3分析:每创建一个对象自动调用一次构造函数,在这里创建了A、B、C三个对象,所以共调用了三次构造函数;每释放一个对象,系8、统自动调用一次析构函数,A、B、C对象释放时,分别调用析构函数,所以析构函数共调用了三次。 例题9:设A为test类的对象且赋有初值,则语句testB
5、贝构造函数是一种成员函数D.拷贝构造函数的名字不能用类名答案:D分析:如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。 例题6:关于静态成员的描述中,()是错误的。A.静态成员可分为静态数据成员和静态成员函数B.静态数据成员定义后必须在类体内进行初始化C.静态数据成员初始化不使用其构造函数D.静态数据成员函数中不能直接引用非静态成员答案:B37.....................最新资料整理推荐...
6、..................分析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。 例题7:关于友元的描述中,()是错误的。A.友元函数是成员函数,它被说明在类体内B.友元函数可直接访问类中的私有成员C.友元函数破坏封装性,使用时尽量少用D.友元类中的所有成员函数都是友元函数答案:A分析:
7、友元函数是非成员函数,在类体内说明了,在类体外定义,定义和调用等同于一般的普通函数;由于它可以直接访问类的私有成员,因此破坏了类的封装性和隐藏性,尽量少用。 例题8:设有如下程序结构:classBox{…};voidmain(){BoxA,B,C;}该程序运行时调用(1)次构造函数;调用(2)次析构函数。37.....................最新资料整理推荐.....................答案:(1)3(2)3分析:每创建一个对象自动调用一次构造函数,在这里创建了A、B、C三个对象,所以共调用了三次构造函数;每释放一个对象,系
8、统自动调用一次析构函数,A、B、C对象释放时,分别调用析构函数,所以析构函数共调用了三次。 例题9:设A为test类的对象且赋有初值,则语句testB
此文档下载收益归作者所有