- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9:引用难道只是别人的替身 引用的用途 #include iostream #include iomanip using namespace std; int main() { int a; int b=a; const int c=12.3; coutc; short s=123; const int rIntegrate=s; s=321; const int *ip=rIntegrate; coutrIntegrate=rIntegrate,s=sendl; coutip=ip,s=s; return 0; 引用默认值为左值没问题 引用默认值不是左值,必须前面加const rInte与s值并不相同,说明rInte默认值并不是s,而是一个临时对象 说明: 常量引用与临时变量共存亡 9 引用难道只是别人的替身 小心陷阱: 如果初始化值是一个左值(可以取得地址),则可以初始化引用。 如果初始化值不是一个左值,则只能对const T(常量引用)赋值,且赋值过程包括3阶段:首先将值隐式转换到类型T,然后将这个转换结果存放在一个临时对象中,最后用这个临时对象来初始化这个引用变量。 constT(常量引用)过程中使用的临时变量会和constT共“存亡”。 const int rInt=12;//对变量引用的任何操作都会影响匿名临时变量,而不会影响常量12.并且编译器会保证临时对象生命期扩展到初始化后的引用存在的全部时域。 Tips : 若非必要请不要使用const引用,因为引用有时会伴随着临时对象的产生。 在函数生命中,请尽量避免const引用形参声明,使用非const引用形参替代以防因返回const引用生成的临时变量而导致程序执行错误。 a=b+100; a就是左值,b+25就是一个右值。两边不可互换。 小结 主要内容: 实用经验5:计算机是怎么存储变量的? 实用经验6:确保每个对象在使用前已被初始化。 实用经验7:掌握局部变量和全局变量的区别 实用经验8:掌握变量定义的位置与时机。 实用经验9:合理使用引用 重点:变量存储与区分 难点:引用的使用技巧 * #include iostream using namespace std; int g_init_var=100; int g_uninit_var; void Func(int i) { coutiendl; } int main() { static int static_var=101; static int static_var2; int nNumber=1; int nMumberB; int nMumberC; Func(static_var+static_var2+nNumber+nMumberB); char *pszstrLG=liuguang; char *pszStr2=new char; delete pszStr2; int *pnMumber=static_castint *(malloc(sizeof(int))); int *pnMumber2=static_castint *(malloc(100)); free(pnMumber); coutg_init_var g_uninit_varendl; coutstatic_var static_var2endl; coutnNumber nMumberB nMumberCendl; cout(void*)pszstrLG (void*)pszStr2 pnMumber pnMumber2endl; return 0; } * #include iostream using namespace std; int g_init_var=100; int g_uninit_var; void Func(int i) { coutiendl; } int main() { static int static_var=101; static int static_var2; int nNumber=1; int nMumberB; int nMumberC; Func(static_var+static_var2+nNumber+nMumberB); char *pszstrLG=liuguang; char *pszStr2=new char; delete pszStr2; int *pnMumber=static_castint *(malloc(sizeof(int))); int *pnM
您可能关注的文档
最近下载
- 大学思辨英语教程 精读3Unit 1.pptx VIP
- 铁路混凝土结构耐久性设计规范.pdf VIP
- Unit1Helping at home第6课时 B Read and write & C Reading time课件 2025人教pep英语四年级上册.ppt
- 鼎捷ERP全套操作参考手册.docx VIP
- GB_T 20394-2019 体育用人造草.docx VIP
- 译林版六年级英语上册全册课件【完整版】.ppt VIP
- 金风2.5MW机组运行维护手册(1)(1).doc VIP
- 地下工程防水技术规范.docx VIP
- 浅析金风1.5MW机组变桨逆变器OK信号丢失原因及恢复措施.pdf VIP
- 2025年金华兰溪市粮食购销有限公司公开招聘工作人员3人的笔试备考试题及答案解析.docx VIP
文档评论(0)