C ++面向对象程序设计 第六章 常见问题.ppt

C ++面向对象程序设计 第六章 常见问题.ppt

  1. 1、本文档共119页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C面向对象程序设计第六章常见问题

主讲教师: 陈良银 个人主页: /~chenliangyin 教材:《C++面向对象程序设计》 李涛 主编 游洪跃 陈良银 李琳等编 高等教育出版社 2006年2月出版 本书内容 第1章 绪论 第2章 C++类和对象 第3章 继承 第4章 多态性 第5章 模板 第6章 C++常见问题 第7章 Visual C++编程基础 第8章 对话框、常用消息、菜单和工具条 第9章 单文档界面和多文档界面 第10章 图形设备接口 实验 (待安排) 本章将讨论C++中比较常见的一些问题,这部分问题比较繁琐,但也是C++中比较核心的问题。 比如:动态内存的使用、const的使用等。编制程序时必须涉及这些内容。 6.1 内联函数的使用 内联与非内联函数的主要区别就在于编译时的处理方式不同。 在执行效率和空间占用上有差异。 6.1.1 内联函数引入的原因 调用函数时,要跳到函数的起始地址去执行,执行完函数的代码后,再返回到调用点继续执行。 这种跳转操作需要保存现场及返回地址;返回时,又需要恢复现场。 函数调用需要一定的时间开销和空间开销,这会影响程序的执行效率。 对内联函数,编译器会在程序出现内联函数调用的地方用函数体直接进行替换。 目标程序将不存在调用问题,也就不会产生跳转的问题,自然就不存在函数调用所需要的时间和空间开销。 在编译时用函数代码替换到调用处,如果函数代码长度比较长,超过了跳转语句所占空间的长度,这自然会增加整个程序的代码量,进而增加了空间的开销。 6.1.2 内联函数的定义 例6_1:smain6_1.cpp //1、全局函数定义为内联函数 inline double Show1(double dX) { return dX*dX; } //2、在类声明体内实现的函数不用inline关键字,自动是内联函数。 double Show2(double dX) const { return dX*dX; } //3、在函数声明处可加可不加inline关键字。 double Show3(double dX) const; //4、但在实现处必须加inline关键字 inline double CPerson::Show3(double dX) const { return dX*dX; } 内联函数使用时注意以下几点。 1、在内联函数中不允许用循环语句、开关语句和递归调用语句等。 2、内联函数的定义必须出现在第一次调用内联函数之前。 3、在类内部定义并实现的成员函数自动是内联函数,但在类内定义成员函数时,如果使用了for( )、while( )、do{ }while( )、switch( )等语句,该成员函数会自动转为非内联函数。 4、内联函数中不能够有静态数据。 5、内联函数中不能够有数组说明。 6.1.3 内联和非内联函数的选择使用 内联函数时间开销的减少,以空间的消耗为代价,而且执行效率的提高也不是绝对的。 在决定使用内联函数时要进行适当的取舍。 不是所有的函数都适合采用内联函数。 构造函数和析构函数常常就不适合内联,这是因为构造函数和析构函数在编译时,往往会被编译器附加一大堆代码。 看看CStudent类的构造函数: 例6_2:构造函数、析构函数往往不适合作内联函数。 smain6_2.cpp CStudent( )构造函数看起来是空的,但它可能含有相当多的代码(与编译器的设计有关)。 CStudent的构造函数,需要构建4000字节的空间,并且还需要按照基类的要求初始化这些空间,因此它包含了一个复杂的创建过程。 构造函数和析构函数最好都在类内声明,类外实现。 一般来说,实际编程时最好是不要内联任何函数,除非函数确实很小很简单。 6.2 const的使用 const意味着分配了一块不可改变的内存 。 用const定义或说明常类型量时必须初始化。 常类型量,也就是常量。 const更重要的用途则在于说明函数参数以及函数返回类型。 const主要有以下几种用法: 1、const说明值常量。 2、const说明指针。 3、const说明函数参数及其返回值。 4、const说明类中的常量和成员函数。 6.2.1 const说明值常量 1、说明符号常量,表明符号代表的是一个常量,说明格式如下: double const PI = 12; const double PI = 12; 2、说明数组常量,说明格式如下: int const I_ARRAY[3] = {3, 2, 1}; const char C_CHAR = {a, b, c, d}; 3、说明对象常量,说明格式如下: const CInlin

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档