class LCM { private: int val; public: GCM Gcmcls; //メンバオブジェクト |
/*★ LCM Class で、メンバオブジェクト(GCM)を定義 前田 稔 ★*/ #include <iostream> using namespace std; class GCM { private: int wk,val; public: GCM(int v1, int v2) { cout << "GCM Constructor の開始\n"; wk= v1; val= v2; while(wk!=val) { if (wk>val) wk-= val; else val-= wk; } } ~GCM() { cout << "GCM Destructor の開始\n"; } int GetGcm() { return val; } }; |
GCM Gcmcls; //メンバオブジェクト |
GCM Gcmcls(24,32); //エラーになる |
LCM(int v1, int v2) : Gcmcls(v1, v2) |
val= v1*v2/Gcmcls.GetGcm(); |
class LCM { private: int val; public: GCM Gcmcls; //メンバオブジェクト LCM(int v1, int v2) : Gcmcls(v1, v2) { cout << "LCM Constructor の開始\n"; val= v1*v2/Gcmcls.GetGcm(); } ~LCM() { cout << "LCM Destructor の開始\n"; } int GetLcm() { return val; } }; |
LCM Lcmcls(24,32); int main() { cout << "main() の開始\n"; cout << "GCM(24,32) は " << Lcmcls.Gcmcls.GetGcm() << " で、 LCM(24,32) は " << Lcmcls.GetLcm() << " です\n"; cout << "main() の終了\n"; return 0; } |
GCM Constructor の開始 LCM Constructor の開始 main() の開始 GCM(24,32) は 8 で、 LCM(24,32) は 96 です main() の終了 LCM Destructor の開始 GCM Destructor の開始 |
class LCM { private: int val; public: GCM *Gcmcls; //メンバオブジェクト LCM(int v1, int v2) { cout << "LCM Constructor の開始\n"; Gcmcls = new GCM(v1,v2); val= v1*v2/Gcmcls->GetGcm(); } ~LCM() { cout << "LCM Destructor の開始\n"; delete Gcmcls; } int GetLcm() { return val; } }; LCM *Lcmcls; int main() { cout << "main() の開始\n"; Lcmcls = new LCM(24,32); cout << "GCM(24,32) は " << Lcmcls->Gcmcls->GetGcm() << " で、 LCM(24,32) は " << Lcmcls->GetLcm() << " です\n"; delete Lcmcls; cout << "main() の終了\n"; return 0; } |