The Big Tree(散分贴)

Macor 2007-07-26 02:04:01
正如我们看到的那样,noncopyable 为禁止类的复制和赋值提供了一个方便的办法。但何时我们需要这样做呢?什么情况下我们需要自定义复制构造函数或赋值操作符?这个问题有一个通用的答案,一个几乎总是正确的答案:无论何时你需要定义析构函数、复制构造函数、或赋值操作符三个中的任意一个,你也需要定义另外两个[5]。它们三者间的互动性非常重要,其中一个存在,其它的通常也都必须要有。我们假设你的一个类有一个成员是指针。你定义了一个析构函数用于正确地释放空间,但你没有定义复制构造函数和赋值操作符。这意味着你的代码中至少存在两个潜在的危险,它们很容易被触发。
...全文
618 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2007-07-27
  • 打赏
  • 举报
回复
to Microsoft777:

你根本不知道你什么时候需要,更不知道别人什么时候需要。你这种假设只是一种妄想而已。
Julykey 2007-07-27
  • 打赏
  • 举报
回复
对,只是需要拷贝时才需要这三个函数,如果用不着没必要复制构造函数,比如说很简单的那些类。
jzm0401 2007-07-27
  • 打赏
  • 举报
回复
jf
hiz2007 2007-07-27
  • 打赏
  • 举报
回复
Up~~
JF~~
wisdomqq 2007-07-27
  • 打赏
  • 举报
回复
分?
qinghuoxiaoluan 2007-07-27
  • 打赏
  • 举报
回复
你没有救了?
lmnihf2001 2007-07-27
  • 打赏
  • 举报
回复
JF
tangshuiling 2007-07-27
  • 打赏
  • 举报
回复
jf
ourtoday 2007-07-27
  • 打赏
  • 举报
回复
jf
ouyh12345 2007-07-27
  • 打赏
  • 举报
回复
接分。
作为良好的设计及扩展的需要,拷贝构造函数和赋值运算符还是很有必要的。
lizhizhe2000 2007-07-27
  • 打赏
  • 举报
回复
jf
hamehameha 2007-07-27
  • 打赏
  • 举报
回复
JF
darkloud 2007-07-27
  • 打赏
  • 举报
回复
啥意思,不用回答问题吗
Microsoft777 2007-07-26
  • 打赏
  • 举报
回复
怎么没有人反驳我啊!
星羽 2007-07-26
  • 打赏
  • 举报
回复
顶:)
mymtom 2007-07-26
  • 打赏
  • 举报
回复
JF
Microsoft777 2007-07-26
  • 打赏
  • 举报
回复
无论何时你需要定义析构函数、复制构造函数、或赋值操作符三个中的任意一个,你也需要定义另外两个[5]。

------------------------------------------------------------------------------------

我怎么感觉这句话不是很正确呢!
如果你定义了一个构造函数
但是在程序中没有拷贝的话
那无需定义拷贝构造函数和赋值运算符啊

就像<<effective C++>>里面说的
只有需要的时候编译器才为我们提供默认的拷贝构造函数
如果是我们定义
我们同样也遵循这个道理

C++ 之父的话
是说在需要拷贝的前提下
才需要这三个函数

不要人云亦云啊
pueler 2007-07-26
  • 打赏
  • 举报
回复
up
colin62 2007-07-26
  • 打赏
  • 举报
回复
非常重要的类设计原则
mochen5460 2007-07-26
  • 打赏
  • 举报
回复
jf
加载更多回复(24)

64,640

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧