网站大量收购闲置独家精品文档,联系QQ:2885784924

谭浩强C++程序设计第8章.ppt

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

单击此处添加大标题内容private:intnum;stringname;charsex;};inlinevoidStudent∷display()//在类外定义display函数为内置函数{cout″num:″numendl;cout″name:″nameendl;cout″sex:″sexendl;}在第4章第4.5节曾提到过,在函数的声明或函数的定义两者之一作inline声明即可。值得注意的是:如果在类体外定义inline函数,则必须将类定义和成员函数的定义都放在同一个头文件中(或者写在同一个源文件中),否则编译时无法进行置换(将函数代码的拷贝嵌入到函数调用点)。但是这样做,不利于类的接口与类的实现分离,不利于信息隐蔽。虽然程序的执行效率提高了,但从软件工程质量的角度来看,这样做并不是好的办法。只有在类外定义的成员函数规模很小而调用频率较高时,才将此成员函数指定为内置函数。成员函数的存储方式用类去定义对象时,系统会为每一个对象分配存储空间。如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间。按理说,如果用同一个类定义了10个对象,那么就需要分别为10个对象的数据和函数代码分配存储单元,如图8.4所示。图8.4能否只用一段空间来存放这个共同的函数代码段,在调用各对象的函数时,都去调用这个公用的函数代码。如图8.5所示。图8.5显然,这样做会大大节约存储空间。C++编译系统正是这样做的,因此每个对象所占用的存储空间只是该对象的数据部分所占用的存储空间,而不包括函数代码所占用的存储空间。如果声明了一个类:单击此处添加大标题内容classTime{public:inthour;intminute;intsec;voidset(){cinabc;}};可以用下面的语句来输出该类对象所占用的字节数:coutsizeof(Time)endl;输出的值是12。这就证明了一个对象所占的空间大小只取决于该对象中数据成员所占的空间,而与成员函数无关。函数代码是存储在对象空间之外的。如果对同一个类定义了10个对象,这些对象的成员函数对应的是同一个函数代码段,而不是10个不同的函数代码段。需要注意的是:虽然调用不同对象的成员函数时都是执行同一段函数代码,但是执行结果一般是不相同的。不同的对象使用的是同一个函数代码段,它怎么能够分别对不同对象中的数据进行操作呢?原来C++为此专门设立了一个名为this的指针,用来指向不同的对象。需要说明:不论成员函数在类内定义还是在类外定义,成员函数的代码段都用同一种方式存储。不要将成员函数的这种存储方式和inline(内置)函数的概念混淆。应当说明:常说的“某某对象的成员函数”,是从逻辑的角度而言的,而成员函数的存储方式,是从物理的角度而言的,二者是不矛盾的。8.4对象成员的引用在程序中经常需要访问对象中的成员。访问对象中的成员可以有3种方法:通过指向对象的指针访问对象中的成员;贰通过对象名和成员运算符访问对象中的成员;壹通过对象的引用变量访问对象中的成员。叁8.4.1通过对象名和成员运算符访问对象中的成员例如在程序中可以写出以下语句:stud1.num=1001;//假设num已定义为公用的整型数据成员表示将整数1001赋给对象stud1中的数据成员num。其中“.”是成员运算符,用来对成员进行限定,指明所访问的是哪一个对象中的成员。注意不能只写成员名而忽略对象名。访问对象中成员的一般形式为对象名.成员名不仅可以在类外引用对象的公用数据成员,而且还可以调用对象的公用成员函数,但同样必须指出对象名,如stud1.display();//正确,调用对象stud1的公用成员函数display();//错误,没有指明是哪一个对象的display函数由于没有指明对象名,编译时把display作为普通函数处理。应该注意所访问的成员是公用的(public)还是私有的(private)。只能访问public成员,而不能访问private成员,如果已定义num为私有数据成员,下面的语句是错误的:stud1.num=10101;//num是私有数据成员,不能被外界引用在类外只能调用公用的成员函数。在一个类中应当至少有一个公用的成员函数,作为对外的接口,否则就无法对对象进行任何操作。在第7章第7.1.5节中介绍了指向结构体变量的指针

文档评论(0)

SYWL2019 + 关注
官方认证
内容提供者

权威、专业、丰富

认证主体四川尚阅网络信息科技有限公司
IP属地北京
统一社会信用代码/组织机构代码
91510100MA6716HC2Y

1亿VIP精品文档

相关文档