解:本題是要設計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; }