版权声明:本文为博主原创文章,转载请备注https://blog.csdn.net/travelerwz。 https://blog.csdn.net/Travelerwz/article/details/83626048
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行实现了这个功能。