返回信息流练习 8.10
假设有下面的语句
auto_ptr< string > ps( new string( "Daniel" ) );
下列两个assign()调用的区别是什么 你认为哪个更合适 为什么
ps.get()->assign( "Danny" );
ps->assign( "Danny" );
===============================================
一开始认为涉及到效率问题,由于第一种方法,直接通过get()函数对底层的指针进行操作,所以以为效率会好一些。
反复看这一章内容,原文的意思是auto_ptr所有的操作都是inline的,所以效率和直接使用没有任何区别。
于是就想不明白了,难道第二种方法仅仅是因为做个封装,不暴露细节?
这是一条镜像帖。来源:北邮人论坛 / cpp / #9387同步于 2008/7/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
primer 8.10,auto_ptr的练习
ericyosho
2008/7/8镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
【 在 ericyosho 的大作中提到: 】
: 练习 8.10
: 假设有下面的语句
:
: ...................
第二个打字少些,就好
其实没有什么性能差,一个是显示执行auto_ptr.get() and string.assign()
一个是隐式执行string::assign();
关键在于使用第一个有些违背auto_ptr屏蔽对底层指向对象进行操作的初衷