C++语言实质探讨.pdfVIP

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

电子发烧友 电子技术论坛 C++ 语 言 实 质 探 讨 黄南川,樊益民,王巍巍 ( 河 北 工 业 大 学 分 院 廊 坊065000) 摘要:结合具体实例,深入探讨了C++语言程序设计中一些令人费解的概念的实质,比如像this指针、 虚函数、对象模型的构造等。通过分析汇编代码内容,揭示了编译器在后台所作的部分工作。较为详细地 探讨了类的存储、数据成员和成员函数之间的联系等一些实质性的内容。 关键词: 面向对象、虚函数表、this指针、汇编语言 1 前言 和传统的程序设计方法相比较,面向对象的程序设计方法的最显著的特点是它更接近于 人们通常的思维规律,因而设计出的软件系统能够更直接地、自然地反映客观现实中的问题。 面向对象的程序设计方法起源于信息隐藏和抽象数据类型概念。它的基本思想是将要构 造的软件系统表现为对象集,其中每个对象是将一组数据和使用它的一组基本操作或过程封 装在一起而组成的实体,对象之间的联系主要是通过消息的传递实现的。 然而正是面向对象程序设计的这些特点,长期以来,那些对标准 C 语言有较好了解的 广大技术人员一直难于顺利地过渡到面向对象的编程方法上来,主要表现于对其实质性的技 术概念缺乏真正的了解。比如对象模型的构造、存储、数据与成员函数之间的联系,以及多 态、继承、封装等,对其实质性技术觉得既抽象又具迷惑性。以致在使用中连连碰壁,结果 是不得已而求其次,纷纷转入使用其它可视化编程工具。 本文从 C ++语言模型入手,探讨对象模型的塑造过程。从一个具体的例子着手,针对 VS.NET 集成的 C++编译器的编译结果,对其进行反汇编,从而揭示出代码后面编译器所作 的许多工作,以使读者对类的构造、存储、数据成员与成员函数之间的联系等有一个较为深 入的理解。 2 对象的存储及虚函数表 类和对象是面向程序数据的两个最基本的概念。类是将一组数据和作用在它上面的一 组操作或过程封装在一起组成的数据类型,在 C ++中,类中定义的数据称为数据成员,操 作称为成员函数。而对象则是类的实例,是面向对象的程序设计中最基本的单元。 对象作为一个整体,从外面只能看见它的外部特性,即具备那些处理能力(操作或过 程),而这些处理能力的具体实现和对象内部的状态对外是不可见的。正因为如此,才使得 用户觉得既抽象又具迷惑性。下面以分析一个具体的代码为例,向读者展示对象的存储实质。 例子代码如下: class Class1 { public: int mem_data1; int mem_data2; Class1(){ } //constructor void mem_func1(){ coutthis is mem_func1endl; this-mem_data1 =10;} void virtual mem_vfun1(){ coutthis is mem_vfun1endl; this-mem_data2 =20;} void virtual mem_vfun2(){ coutthis is mem_vfun2endl; this-mem_data2 =30;} }; int _tmain(int argc, _TCHAR* argv[]) 1 电子发烧友 电子技术论坛 { Class1 * ptemp new Class1(); ptemp-mem_func1(); ptemp-mem_vfun1(); return 0; } 上面的代码声明一个类 Class1,它包括两个成员变量 mem_data1,mem_data2 ,一个成员 函数 mem_func1() ,两个成员虚函数 mem_vfunc1() 、mem_vfunc1() 。那么当用户用 Class1 定义一个对象,即 Class1 被实例化后它

文档评论(0)

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

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

1亿VIP精品文档

相关文档