当前位置:首页 > 第五章答案类、构造函数、拷贝构造函数、静态成员、友元
答:D。
6.( )是析构函数的特征。
A.一个类中只能定义一个析构函数 B.析构函数名与类名不同
C.析构函数的定义只能在类体内 D.析构函数可以有一个或多个参数 答:A。
7.通常的拷贝初始化构造函数的参数是( )。 A.某个对象名
B.某个对象的成员名 C.某个对象的引用名 D.某个对象的指针名 答:C。
8.关于成员函数特征的下述描述中,( )是错误的。 A.成员函数一定是内联函数 B.成员函数可以重载
C.成员函数可以设置参数的默认值 D.成员函数可以是静态的 答:A。
9.下述静态数据成员的特性中,( )是错误的。 A.说明静态数据成员时前边要加修饰符static B.静态数据成员要在类体外进行初始化
c.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符 D.静态数据成员不是所有对象所共用的 答:D。
l0.友元的作用( )。 A.提高程序的运用效率 B.加强类的封装性 C.实现数据的隐藏性 D.增加成员函数的种类 答:A。
二、判断下列描述的正确性,对者划√,错者划×
√1.使用关键字class定义的类中默认的访问权限是私有(private)的 ×2.作用域运算符(::)只能用来限定成员函数所属的类。 ×3.析构函数是一种函数体为空的成员函数。 ×4.构造函数和析构函数都不能重载。
√5.说明或定义对象时,类名前面不需要加class关键字。
√6.对象成员的表示与结构变量成员表示相同,使用运算符.或一>。
×7.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类 外的函数对它们的访问都是非法的。
√8.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。 ×9.可以在类的构造函数中对静态数据成员进行初始化。
√10.如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为 静态成员函数。
三、分析下列程序的输出结果 1.
#include<iostream.h> class A {
public: A();
A(int i,int j); void print( ); private: int a,b; };
A::A( ) {
a=b=0;
cout<<”default constructor called.\n”; } A::A(int i,int j) {
a=i; b=j;
cout<<”Constructor called.\n”; } void A::print() {
cout<<”a=”<<a<<”,b=”<<b<<endl; }
void main( ) {
A m,n(4,8); m.print(); n.print(); }
运行该程序输出结果如下所示。 Default constructor called Constructor called a=O, b=O a=4, b=8 说明:
该程序中定义一个类A,该类中有两个构造函数,一个是默认构造函数,另一个是带 两个参数的构造函数。类中还有一个Print()函数,用来输出显示该类的两个私有数据成员的值。类中的所有成员都定义在类体外,该类有明显的说明部分和实现部分。 读者可将实现部分省略,将函数定义放在类体内试一下。
2.
#include<iostream.h> class B {
Public: B(){}
B(int i,int j); void printb(); private: int a,b; };
class A {
public: A(){}
A(int i,int j); void printa( ); private: B c; };
A::A(int i.Int j):c(i,j) {}
void A::printa( ) {
c.printb( ); }
B::B(int i,int) {
a=i; b=j; }
void B::printb()
cout<<”a=”<<a<<”,b=”<<b<<end1; }
Void main() {
A m(7,9); m.Printa(); }
运行该程序输出结果如下所示. a=7,b=9 说明:
该程序中有两个类:A和B.在类A中有一个类B对象作为私有的数据成员,该 成员又称为子对象,有关子对象的详情在下一章中讲述,包含该类中带有两个参数的
构造函数带有成员初始化表的问题等. 3.
#include<iostream.h> class Count {
Public:
Count( ) {count十十;}
static int HM( ) {return count;} ~Count( ) { count一一;) private:
static int count: };
int Count::count=100; void main() {
Count c1,c2,c3,c4;
cout<<count:: HM()<<endl; }
运行该程序输出如下结果 104 说明:
该程序中只定义一个类Connt,该类中有一个静态成员函数HM()和静态数据成员 count。对静态数据成员在类体外以下述形式进行了初始化。 int Count::count=100; 使count值为l00。
该类中还有一个默认构造函数和析构函数,这两个函数中对静态数据成员count进 行了操作。
在主函数中,先创建了该类的4个对象cl,c2,c3和c4。这时系统自动调用4次默认构造函数进行初始化。于是,count将增值为l04。再使用类名限定的形式调用静态成员函数HM(),输出显示出count的值为104。
结束程序前,系统又自动调用4次析构函数,结果使count值又恢复到初值loo。关于这一点请读者编程验证一下。 4.
#include<iostream.h> class A {
public:
A(double t,double r) { Total=t;Rate=r;} friend double Count(A&a) {
a.Total+=a.Rate * a.total; return a.Total; }
privat:
共分享92篇相关文档