C++組合(聚合)與C結構體中包含函式
阿新 • • 發佈:2018-11-10
C++組合(聚合)與C結構體中包含函式
今天突然想到C++的聚合,以前一直沒有注意,今天想到就寫下來,做個筆記;
C++的類與我們的C語言中的結構體特別像,但是有有些不太一樣,這裡不多累贅了不能,大家學過的都知道。
C++組合(聚合)
我們知道的都是C++的類的物件,也就是例項化的過程,但是,有時候一些類我門需要他以聚合的形式來使用,比如設計模式裡面用的比較多一些。
接下來,我門看一個例子:
1 #include<iostream> 2 using namespace std; 3 4 class Sum 5 { 6 public: 7 void Print() 8 { 9 cout<<"hello 1111"<<endl; 10 } 11 }; 12 13 class Dev 14 { 15 public: 16 Sum* sum; 17 void haha() 18 { 19 cout<<"hello 22"<<endl; 20 sum->Print(); 21 } 22 }; 23 int main() 24 { 25 Dev dev; 26 dev.haha(); 27 return 0; 28 }
從程式碼中,我們就可以看出,Sum這個類的使用就是聚合的方式,呼叫方式和我們例項化後呼叫的方式是一樣的,沒有什麼大的區別。(16行使用聚合的方式)
接下來,我們看一下C語言中的結構體,可以進行對比一樣
1 #include<stdio.h> 2 void Print() 3 { 4 printf("hello 000\n"); 5 } 6 struct Test 7 { 8 void (*Print)(); 9 }; 10 int main() 11 { 12 struct Test test; 13 test.Print = Print; 14 test.Print(); 15 return 0; 16 }
我們知道,C語言的結構體不可以像C++的類一樣實現和申明函式,所以只能通過函式指標的方式來實現。程式碼第8行和程式碼13行實現了這個功能。