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

清华大学c++讲义_郑莉_第4章 类及对象.ppt

  1. 1、本文档共92页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++中的类型转换 const_cast 用法:const_casttype_id(expression) 该运算符用来修改类型的const或volatile属性。 常量指针被转化成非常量指针,并且仍然指向原来的对象;常量引用被转换成非常量引用,并且仍然指向原来的对象;常量对象被转换成非常量对象。 * C++中的类型转换 dynamic_cast 用法:dynamic_casttype-id(expression) 该运算符把expression转换成type-id类型的对象。type-id必须是类的指针、类的引用或者void *;如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。 dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;在进行下行转换时,dynamic_cast具有类型检查的功能,比 static_cast更安全。 * C++中的类型转换 dynamic_cast dynamic_cast是ANSI C++中仅有的两个与RTTI (Run Time Type Identification) 有关的用法之一。C++的类继承,使得有时很难弄清楚你正在使用的object属于哪个class,特别是当继承树比较深并且比较复杂的时候。 主流的C++编译器为了满足一些吝啬的C程序员的要求,一般都提供了把RTTI关掉的编译选项,这样确实可以减少一些空间开销。而如果你使用了这样的编译选项,而你的程序中又使用了dynamic_cast,就会引起的程序崩溃。 * C++中的类型转换 reinterpret_cast 用法:reinterpret_casttype-id(expression) reinterpret_cast是C++里的强制类型转换符。操作符修改了操作数类型,但仅仅是重新解释了给出的对象的比特模型而没有进行二进制转换。 reinterpret_cast只能在指针之间转换。 * 4.8.3对象作为函数参数和返回值的传递方式 对象参数的传递方式 通过运行栈来传递 主调函数调用拷贝构造函数,在运行栈的传参区域上创建对象 被调函数可以读取传参区域上的对象 有时对拷贝构造函数的调用可以省去 例: z.add(Complex(3, 4)) 直接调用构造函数Complex(float, float),在运行栈的传参区域上建立对象 * 4.8 深度探索 4.8.3对象作为函数参数和返回值的传递方式(续) 对象作为返回值传递方式 在主调函数中创建临时对象 主调函数把该对象地址(引用)传递给被调函数 被调函数返回时,在该地址上执行拷贝构造 * 4.8 深度探索 Point fun2() { Point a(1, 2); return a; } void fun2(_Point result) { _Point a; Point_Point(a, 1, 2); Point_Point(result, a); } b = fun2(); _Point temp; fun2(temp); b = temp; 4.8.3对象作为函数参数和返回值的传递方式 (续) 有时返回时可以不调用拷贝构造函数 例:return Point(1, 2); 直接调用构造函数Point(int, int),生成返回的对象 有时主调函数中可以不建立临时对象 例:Point p = fun2(); 先为p申请空间,调用fun2()前传递p的地址,这样在返回时可直接在p的空间上构造返回对象 * 4.8 深度探索 4.9 小结 主要内容 面向对象的基本概念、类和对象的声明、构造函数、析构函数、内联成员函数、拷贝构造函数、类的组合 达到的目标 * * * ***************2011/10/19 * * * * * 几种关系的图形标识 作用关系——关联 图中的“重数A”决定了类B的每个对象与类A的多少个对象发生作用,同样“重数B”决定了类A的每个对象与类B的多少个对象发生作用。 * 4.5 UML图形标识 —— 4.5.2 UML类图 类 A 重数A 类 B 重数B 几种关系的图形标识 包含关系——聚集和组合 共享聚集 组成聚集(简称组合) 聚集表示类之间的关系是整体与部分的关系,“包含”、“组成”、“分为……部分”等都是聚集关系。共享聚集:部分可以参加多个整体;组成聚集:整体拥有各个部分,整体与部分

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档