C语言中的类模拟C++编程思想-Read.PDFVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中的类模拟C编程思想-Read

C 语言中的类模拟(C++编程思想) 在面向对象的语言里面,出现了类的概念。这是编程思想的一种进化。所谓类:是对特定数 据的特定操作的集合体。所以说类包含了两个范畴:数据和操作。而 C 语言中的 struct仅仅是数 据的集合。(liyuming1978@163.com) 1.实例:下面先从一个小例子看起 #ifndef C_Class #define C_Class struct #endif C_Class A { C_Class A *A_this; void (*Foo)(C_Class A *A_this); int a; int b; }; C_Class B{ //B继承了 A C_Class B *B_this; //顺序很重要 void (*Foo)(C_Class B *Bthis); //虚函数 int a; int b; int c; }; void B_F2(C_Class B *Bthis) { printf(It is B_Fun\n); } void A_Foo(C_Class A *Athis) { printf(It is A.a=%d\n,Athis-a);//或者这里 // exit(1); // printf(纯虚 不允许执行\n);//或者这里 } void B_Foo(C_Class B *Bthis) { printf(It is B.c=%d\n,Bthis-c); } void A_Creat(struct A* p) { p-Foo=A_Foo; p-a=1; p-b=2; p-A_this=p; } void B_Creat(struct B* p) { p-Foo=B_Foo; p-a=11; p-b=12; p-c=13; p-B_this=p; } int main(int argc, char* argv[]) { C_Class A *ma,a; C_Class B *mb,b; A_Creat(a);//实例化 B_Creat(b); mb=b; ma=a; ma=(C_Class A*)mb;//引入多态指针 printf(%d\n,ma-a);//可惜的就是 函数变量没有 private ma-Foo(ma);//多态 a.Foo(a);//不是多态了 B_F2(b);//成员函数,因为效率问题不使用函数指针 return 0; } 输出结果: 11 It is B.c=13 It is A.a=1 It is B_Fun 2.类模拟解说: 我在网上看见过一篇文章讲述了类似的思想(据说 C++编程思想上有更加详细的解说, 可惜我没空看这个了,如果有知道的人说一说吧)。但是就象 C++之父说的:“C++和 C 是两种语 言”。所以不要被他们在语法上的类似就混淆使用,那样有可能会导致一些不可预料的事情发生。 其实我很同意这样的观点,本文的目的也不是想用 C 模拟 C++,用一个语言去模拟另外 一个语言是完全没有意义的。我的目的是想解决 C 语言中,整体框架结构过于分散、以及数据和 函数脱节的问题。 C语言的一大问题是结构松散,虽然现在好的大型程序都基本上按照一个功能一个文件的 设计方式,但是无法做到更小的颗粒化――原因就在于它的数据和函数的脱节。类和普通的函数 集合的最大区别就在于这里。类可以实例化,这样相同的函数就可以对应不同的实例化类的变量。

文档评论(0)

zhaoxiaoj + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档