社区
C++ 语言
帖子详情
effective c++第11
shaAbca
2011-01-02 10:11:57
class Bitmap
{
};
class Widget
{
Bitmap* pb;
}
Widget& Widget::operator=(const Widget& rhs)
{
delete pb; //
Widget& Widget::operator=(const Widget& rhs)
{
Bitmap* pOrig = pb; //
}
int main()
{
Widget w;
w = w; //执行到这里时,上面两个//的意思是?
}
...全文
74
5
打赏
收藏
effective c++第11
class Bitmap { }; class Widget { Bitmap* pb; } Widget& Widget::operator=(const Widget& rhs) { delete pb; // Widget& Widget::operator=(const Widget& rhs) { Bitmap* pOrig = pb; // } int main() { Widget w; w = w; //执行到这里时,上面两个//的意思是? }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
高性能架构探索
2011-01-03
打赏
举报
回复
要摒弃 自己给自己赋值这一操作
所以更多安全的代码里面都有
if(this == &rhs)这个操作...
yutaooo
2011-01-02
打赏
举报
回复
delete pOrig;的时候,在这个时间点上,pb指向一个新new出来的对象,不在是pOrig指向的那个了。
很简单的,你再想想,估计一下卡住了,呵呵。
shaAbca
2011-01-02
打赏
举报
回复
Widget& Widget::operator=(const Widget& rhs)
{
delete pb;
pb = new Bitmap(*rhs.pb);
return *this;
}
当w = w,(*this).pb = rhs.pb,
delete pb,rhs.pb = ?
pb = new Bitmap(*rhs.pb)时
对它进行解引用所以失败了.pb = ?
Widget& Widget::operator=(const Widget& rhs)
{
Bitmap *pOrig = pb;
pb = new Bitmap(*rhs.pb);
delete pOrig;
return *this;
}
当w = w时.
这代表pOrig = pb = rhs.pb;
pb = new Bitmap(*rhs.pb);
delete pOrig;不是pb = ?吗 rhs.pb也等于?吗
怎么是合法的呢?
yutaooo
2011-01-02
打赏
举报
回复
这大概是在说,对于operator=()的实现,要考虑自己赋值给自己,这种情况。
自己赋值给自己,应该什么都不发生。而,如果不加检测,直接delete pb,则有可能错误的清空自己。
無_1024
2011-01-02
打赏
举报
回复
Widget& Widget::operator=(const Widget& rhs)
{
delete pb; // 删除当前对象空间
Widget& Widget::operator=(const Widget& rhs)
{
Bitmap* pOrig = pb; // 构造一个基类指针指向当前的对象
}
Effect
ive
C++
中文版
《
Effect
ive
C++
中文版(第3版改善程序与设计的55个具体做法)》不是读完一遍就可以束之高阁的快餐读物,也不是用以解决手边问题的参考手册,而是需要您去反复阅读体会的,
C++
是真正程序员的语言,背后有着精深的...
More
Effect
ive
C++
More
Effect
ive
C++
是一本无微不至而且价值不扉的书籍,是 Scott 第一本书
Effect
ive
C++
的续集。我相信每一位专业的
C++
软体开发人员都应该读过并记忆
Effect
ive
C++
和 More
Effect
ive
C++
两本书内的各种...
科学智能-人工智能新浪潮
Foundation Model for Science
Effect
ive
Training: A System Work
Effect
ive
Inference: Double Prompts Experimental Results Session 4: Discovering New Science AI for New Physics Detection Force Field ...
effect
ive
stl
推荐购买:
C++
Primer中文版(第5版)(顶级畅销书重磅升级 全面采用最新
C++
11
标准)推荐购买:Essential
C++
中文版(
C++
捷径首屈一指的必读经典)推荐购买:
Effect
ive
C++
:改善程序与设计的55个具体做法(第三版...
Effect
ive
Modern
C++
英文版及中文翻译
Effect
ive
Modern
C++
英文版及中文翻译. 第一章 类型推导 条款1: 理解模板类型推导 条款2: 理解auto类型推导 条款3: 理解decltype 条款4: 知道如何查看类型推导 第二章 auto关键字 条款5: 优先使用auto而非显式...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章