避免返回handles指向对象内部内容
来源:互联网 发布:淘宝怎么这么费4g流量 编辑:程序博客网 时间:2024/05/17 04:41
References, 指针和迭代器统统都是所谓的handles(号码牌,用来取得某个对象)。
返回handles一方面降低了类的封装性,即令成员函数返回一个访问级别较低的成员;另一方面会造成虽然使用const成员函数,但是对象的状态依然被改变(可令返回常量避免)。最重要的问题是dangling handles(悬挂号码牌):handles所指向的东西(所属对象)不复存在。
必须返回对象时,别妄想返回其reference!
函数创建新对象的方式有两种,在stack空间或在heap空间创建。在stack空间创建的变量是local变量,当程序运行结束,对象就会被销毁,故而造成reference指向一个残骸。另一方面,我们可能会寻求heap对象的帮助,众所周知,heap空间只能通过new或malloc申请,如果程序需要大量产生这种new出来的临时对象,那么如果delete掉则需要认真考虑了。也许我们还不放弃,既然stack对象生存期太短,new对象资源管理又麻烦,那我就生成一个static对象,什么都不用担心。只能呵呵了。static变量只会在模块或者函数内保存一个备份,如果多个对象访问这一个函数,那么他们操作的将是同一个static对象,再加上都加都是reference的关系。这个量只能是共享了。能不能,你的代码了。
一个“必须返回新对象”的函数正确的写法是:返回一个新对象,而不是引用。
其实如果没有dangling的风险又对封装要求不高,尝试返回引用还是可以的,比如operator[]s就是返回references指向“容器内的数据”。
0 0
- 避免返回handles指向对象内部内容
- 条款28:避免返回handles指向对象内部成分
- 条款28:避免返回handles指向对象内部成分
- 条款28:避免返回handles指向对象内部成分
- effective c++ 避免返回handles指向对象内部成分
- 条款28:避免返回handles指向对象内部成分
- 条款28:避免返回handles指向对象内部成分
- 条款28:避免返回handles指向对象内部成分
- 条款28 避免返回handles指向对象内部成分
- 28避免返回handles指向对象内部成分——effective c++
- 《Effective C++》读书笔记之item28:避免返回handles指向对象内部成分
- Effective C++:条款28:避免返回 handles 指向对象内部成员
- effective c++ 避免返回handles指向对象内部成分(1)
- effective c++避免返回handles指向对象内部成分(2)
- 《Effect C++》学习------条款28:避免返回handles指向对象内部成分
- 【Effection C++】读书笔记 条款28:避免返回handles指向对象内部成分
- 读书笔记《Effective C++》条款28:避免返回handles指向对象内部成分
- C++之避免返回handles指向对象内部成分(28)---《Effective C++》
- Backbone源码分析-Backbone架构+流程图
- 题目:输入一个字符串,输出该字符串中字符的所有组合
- Apache Tomcat AJP 实现负载均衡
- android中的CheckedTextView
- android-bootstrap
- 避免返回handles指向对象内部内容
- 10 Great Tools for Startups We Use Daily
- Windows程序调试----简介
- CCleaner 4.07中文版下载 绿色精简
- 【C# MySQL】第一次使用C#对MySQL进行操作的心得
- php解析word内容以及php解析pdf内容
- Windows核心编程(八)用内核对象进行线程同步
- UML之类图
- 网络层ICMP和ARP协议