- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四讲引用
引用作为函数返回值(cont.) [注意] 返回变量引用的函数 return 后面必须为变量,不能为常量或者表达式 局部变量不能作为引用返回 int fun( int x , int y ) { … … return y; } 结果不可预知! 引用作为函数返回值(cont.) 4_10 int sum = 0; int foo(int arg) { sum += arg; return sum; } int main() { foo(10) += 20; cout sum = sum endl; return 0; } 引用作为函数返回值(cont.) 当返回常量时,则函数返回类型也应该为const 4_11 const int knum = 3; const int foo() { return knum; } int main() { cout foo() endl; system(PAUSE); return 0; } 引用作为函数返回值 引用返回与传值返回的区别 … … int fun(int y) { return y; } … … int fun(int y) { return y; } … … int *fun(int *y) { return y; } int main() { int ival = 2; cout fun(ival) endl; return 0; } 4_12 函数与引用 引用作为函数参数 引用作为函数返回值 函数引用 int reffunction(int aival) { cout Hello world! endl; return 1; } int ( rfn1 )(int) = reffunction; int ( rfn2 )(int) = rfn1; int main() { rfn1(1); rfn2(1); return 0; } 函数引用 本次议题 引用 普通变量与引用 指针变量与引用 const与引用 引用作为函数参数 类型强制转换 对强制类型转换的改进 C++对旧式强制类型转换的改进 C的旧式强制转换: C++的强制转换:(兼容了C的转换) 类型名 (表达式) (类型名)(表达式) int (x) int (x + y) (int) x (int) 5 (int) (x + y) 对强制类型转换的改进 命名的强制类型转换 const_cast static_cast reinterpret_cast dynamic_cast (后续课程中讲解) 对强制类型转换的改进 const_cast: const_casttype_id(exdivssion) 功能: 用于去除const 反过来也可加上const 注意:只针对指针或引用 const int ival = 10;int ivall = const_castint(ival); //无法转换 int *p_ival = const_castint *(ival); const int *q_ival = const_castconst int *(p_ival); DEMO b4 对强制类型转换的改进 void fun( const char* src ) { char *p = const_castchar*(src); //char *p = src; while( *p != \0 ) { *p = x; p++; } } int main() { char buf[] = hello world; fun( buf ); cout buf endl; return 0; } 对强制类型转换的改进 static_cast: static_casttype_id(exdivssion) 功能: 用于内置数据类型之间的转换,如:int转换成char 空指针转为目标类型指针或目标类型指针转换空指针(参与转换的两个指针之中至少一个是void *) 把任何类型的表达式转换成void类型 用于类层次结构中基类和子类之间指针或引用的转换 具有继承关系的类类型对象之间转换(基类不可以转换成派生类对象,派生类对象可以转换成基类对象) DEMO b5 对强制类型转换的改进 对强制类型转换的改进 reinterpret_cast: reinterpret_cast
文档评论(0)