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

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行实现了这个功能。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值