拷贝构造函数是用一个已存在的对象去构造一个不存在的对象(拷贝构造函数毕竟还是构造函数嘛),也就是初始化一个对象。而赋值运算符重载函数是用一个存在的对象去给另一个已存在并初始化过(即已经过构造函数的初始化了)的对象进行赋值。
它们定义上的区别,楼上的已经说过了。 比如:String s1("hell....
分类:
其他好文 时间:
2014-05-29 01:26:15
阅读次数:
278
oop示例,面向过程和面向对象的区别,常成员函数,C++设计一个字符串类String,拷贝构造函数(补充)
分类:
编程语言 时间:
2014-05-26 10:58:14
阅读次数:
236
条款05:了解C++默默编写并调用哪些函数
默认构造函数、拷贝构造函数、拷贝赋值函数、析构函数构成了一个类的脊梁,只有良好的处理这些函数的定义才能保证类的设计良好性。
当我们没有人为的定义上面的几个函数时,编译器会给我们构造默认的。
当成员变量里有const对象或引用类型时,编译器会不能合成默认的拷贝赋值函数;当一个基类把它的拷贝赋值函数定义为private时,它的派生类也不无生...
分类:
编程语言 时间:
2014-05-22 17:05:38
阅读次数:
341
关于默认拷贝构造函数,有一点和默认构造函数类似,就是编译器只有在【需要的时候】才去合成默认的拷贝构造函数。在什么时候才是【需要的时候】呢?也就是类不展现【bitwise
copy semantics】时,即不展现【逐位次拷贝】时,才会合成默认拷贝构造函数。所谓的【逐位次拷贝】,也就是简单的赋值,不管...
分类:
编程语言 时间:
2014-05-20 08:07:10
阅读次数:
322
//拷贝构造函数,什么时候算是 “合适的时候”,才会合成呢~~~
#include
using namespace std;
class A
{
public:
A(char *_str):str(_str),x(0){}
//A(const A&a){cout
//如果没有定义的话,对于类A来说,编译器依然不会合成,因为此时的对象之间的...
分类:
其他好文 时间:
2014-05-15 05:11:13
阅读次数:
334
拷贝构造函数,深拷贝,浅拷贝,以及赋值运算符的重载...
分类:
其他好文 时间:
2014-05-13 05:29:10
阅读次数:
236
最近实现了一个string类,添加了一些c++11元素。除了基本的构造析构函数,拷贝构造和赋值函数,另外添加移动拷贝和赋值函数。default是一个很方便的特性有木有。
//default constructorKianString()=default;KianString(const char *...
分类:
其他好文 时间:
2014-05-12 01:14:09
阅读次数:
347
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int
b=a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 1 #include 2 using
namespace std; 3 4 class CExampl.....
分类:
编程语言 时间:
2014-05-12 00:03:19
阅读次数:
516