解:本题是要设计Test类,其设计方法很多,这里给出一种解法。Test类包含两个私有数据成员x、y,以及两个公共成员函数init()和print(),前者用于给数据成员赋值,后者用于x,y的减法运算和输出相应的结果。 #include<iostream.h> class Test { int x,y; public: void init(int,int); void print(); };
解: 本题构造函数与析构函数的调用顺序。这里定义了两个对象,先顺序调用obj1和obj2对象的构造函数,再调用各自的成员函数disp(),最后顺序调用obj2和obj1的析构函数。所以输出为: constructing nomally constructing with a number:20 display a number:0 display a number:20 destructing destructing
解: 本题说明了类数据成员指针的使用方法。这里通过指向对象的指针来给类数据成员赋值,其原理与上题相似。输出为: x=10,y=20 ------------------------------------------------------ 题13.分析以下程序的执行结果 #include<iostream.h> class Sample { int x; int y; public: Sample(int a,int b) { x=a;y=b; } int getx(){return x;} int gety(){return y;} };
void main() { int (Sample::*fp)(); fp=&Sample::getx; Sample s(2,7); int v=(s.*fp)(); fp=&Sample::gety; int t=(s.*fp)(); cout<<"v="<<v<<",t="<<t<<endl; }
题14 .分析以下程序的执行结果 #include<iostream.h> class Sample { int x; int y; public: Sample(int a,int b) { x=a;y=b; } int getx(){return x;} int gety(){return y;} };
void main() { int (Sample::*fp)(); fp=&Sample::getx; Sample s(2,7),*p=&s; int v=(p->*fp)(); fp=&Sample::gety; int t=(p->*fp)(); cout<<"v="<<v<<",t="<<t<<endl; }