C++拷贝构造函数和operator =的区别
C++拷贝构造函数和operator =的区别
起因
之前感觉拷贝构造函数和operator =
作用很相似,也没有细察他们的区别,今天看了一些文章实验了一下:
比如我创造了一个Base的class,我同时编写了拷贝构造函数和operator=
,那么对于下面这个代码有几个疑问:
1 |
|
Base b = a;
调用拷贝构造函数 还是 operator =
呢? 是两者都可以,还是必须是其中一种?
解析
首先我们了解他们的调用时机:
构造函数调用时机:该类对象初始化
operator=
调用时机:该类对象被赋值=
1 |
|
个人认为这样的设计十分合理,从调用时机很好的区分了两者的区别。
Reference
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!