C++组合(聚合)与C结构体中包含函数

版权声明:本文为博主原创文章,转载请备注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行实现了这个功能。

猜你喜欢

转载自blog.csdn.net/Travelerwz/article/details/83626048