The Big Tree(散分贴)
正如我们看到的那样,noncopyable 为禁止类的复制和赋值提供了一个方便的办法。但何时我们需要这样做呢?什么情况下我们需要自定义复制构造函数或赋值操作符?这个问题有一个通用的答案,一个几乎总是正确的答案:无论何时你需要定义析构函数、复制构造函数、或赋值操作符三个中的任意一个,你也需要定义另外两个[5]。它们三者间的互动性非常重要,其中一个存在,其它的通常也都必须要有。我们假设你的一个类有一个成员是指针。你定义了一个析构函数用于正确地释放空间,但你没有定义复制构造函数和赋值操作符。这意味着你的代码中至少存在两个潜在的危险,它们很容易被触发。
[解决办法]
SF
[解决办法]
定
[解决办法]
OK, JF
[解决办法]
接分不是罪~
[解决办法]
jf 之
[解决办法]
If a class needs a copy operation or a destructor, it probably needs a constructor, a destructor, a copy assignment, and a copy constructor...
-----Bjarne Stroustrup
[解决办法]
继续
[解决办法]
接分不是罪~
[解决办法]
这段话是引用的?
[解决办法]
无论何时你需要定义析构函数、复制构造函数、或赋值操作符三个中的任意一个,你也需要定义另外两个。
=====
然 ...
[解决办法]
rule of three
[解决办法]
“无论何时你需要定义析构函数、复制构造函数、或赋值操作符三个中的任意一个,你也需要定义另外两个[5]。”
赞同
[解决办法]
jf
[解决办法]
jf
[解决办法]
真的吗?
能不能把里面的联系讲得再明白一点?
[解决办法]
拿分就好
[解决办法]
如果没有指针,需要定义复制构造函数吗?
[解决办法]
同意这段话
[解决办法]
接分
[解决办法]
无论何时你需要定义析构函数、复制构造函数、或赋值操作符三个中的任意一个,你也需要定义另外两个[5]。”
有道理阿! 学习了 但分也是要的
[解决办法]
..........................
[解决办法]
jf
[解决办法]
“大三法则”
[解决办法]
jf
[解决办法]
jf
[解决办法]
非常重要的类设计原则
[解决办法]
up
[解决办法]
无论何时你需要定义析构函数、复制构造函数、或赋值操作符三个中的任意一个,你也需要定义另外两个[5]。
------------------------------------------------
我怎么感觉这句话不是很正确呢!
如果你定义了一个构造函数
但是在程序中没有拷贝的话
那无需定义拷贝构造函数和赋值运算符啊
就像 < <effective C++> > 里面说的
只有需要的时候编译器才为我们提供默认的拷贝构造函数
如果是我们定义
我们同样也遵循这个道理
C++ 之父的话
是说在需要拷贝的前提下
才需要这三个函数
不要人云亦云啊
[解决办法]
JF
[解决办法]
顶:)
[解决办法]
怎么没有人反驳我啊!
[解决办法]
JF
[解决办法]
jf
[解决办法]
接分。
作为良好的设计及扩展的需要,拷贝构造函数和赋值运算符还是很有必要的。
[解决办法]
jf
[解决办法]
jf
[解决办法]
JF
[解决办法]
你没有救了?
[解决办法]
分?
[解决办法]
Up~~
JF~~
[解决办法]
jf
[解决办法]
对,只是需要拷贝时才需要这三个函数,如果用不着没必要复制构造函数,比如说很简单的那些类。
[解决办法]
to Microsoft777:
你根本不知道你什么时候需要,更不知道别人什么时候需要。你这种假设只是一种妄想而已。
[解决办法]
啥意思,不用回答问题吗