1. 程式人生 > 其它 >[c++] 類巢狀

[c++] 類巢狀

 1 #include <iostream>
 2 
 3 class My1{
 4     public:
 5         My1();
 6         ~My1();
 7 };
 8 
 9 class My2{
10     public:
11         My2();
12         ~My2();
13     My1 mymm;
14 };
15 
16 class My3{
17     public:
18         My3();
19         ~My3();
20     My1 mymm;
21 };
22 
23 My1::My1(){
24 std::cout<<"my1gouzao"<<std::endl; 25 } 26 My1::~My1(){ 27 std::cout<<"my1xigou"<<std::endl; 28 } 29 My2::My2(){ 30 std::cout<<"my2gouzao"<<std::endl; 31 } 32 My2::~My2(){ 33 std::cout<<"my2xigou"<<std::endl; 34 } 35 My3::My3(){ 36 std::cout<<"
my3gouzao"<<std::endl; 37 } 38 My3::~My3(){ 39 std::cout<<"my3xigou"<<std::endl; 40 } 41 42 int main(){ 43 My2 mym2; 44 My3 mym3; 45 }

例1:巢狀類的構造與析構

例2:在一個類中建立另一個類的例項(直接訪問)

 1 #include <iostream>
 2 using namespace std;
 3 class My1{
 4     public:
 5         My1();
6 ~My1(); 7 int i; 8 }; 9 10 class My2{ 11 public: 12 My2(); 13 ~My2(); 14 void say(); 15 My1 my1; 16 }; 17 18 My1::My1(){ 19 cout<<"my1gouzao"<<endl; 20 } 21 void My2::say(){ 22 my1.i = 200; 23 cout<<my1.i<<endl; 24 } 25 My1::~My1(){ 26 cout<<"my1xigou"<<endl; 27 } 28 My2::My2(){ 29 cout<<"my2gouzao"<<endl; 30 } 31 My2::~My2(){ 32 cout<<"my2xigou"<<endl; 33 } 34 35 int main(){ 36 My2 my2; 37 my2.say(); 38 }

例3:在一個類中建立另一個類的例項(介面訪問)

 1 #include <iostream>
 2 using namespace std;
 3 class My1{
 4     public:
 5     My1();
 6     ~My1();
 7     void setage(int age);
 8     void show();
 9     private:
10     int m_age;
11 };
12 
13 class My2{
14     public:
15     My2();
16     ~My2();
17     My1 my1;
18     void say();
19 };
20 
21 My1::My1(){
22     cout<<"my1gouzao"<<endl;
23 }
24 My1::~My1(){
25     cout<<"my1xigou"<<endl;
26 }
27 void My1::setage(int age){
28     m_age=age;
29 }
30 void My1::show(){
31     cout<<"我今年"<<m_age<<""<<endl;
32 }
33 My2::My2(){
34     cout<<"my2gouzao"<<endl;
35 }
36 My2::~My2(){
37     cout<<"my2xigou"<<endl;
38 }
39 void My2::say(){
40     my1.setage(2);
41     my1.show();
42 }
43 
44 int main(){
45     My1 my1;
46     My2 my2;
47     my1.setage(20);
48     my1.show();
49     my2.say();
50     my1.show();
51 }

這裡用到了私有屬性和封裝。在My2中定義My1的例項,My1 my1和My2 my2中的my1是不同的,通過my2不能直接修改My1 my1屬性的值

參考:

https://www.cnblogs.com/prettyshuang/p/5427689.html

https://www.cnblogs.com/haoyul/p/7287681.html

https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/3854914.html