拷贝构造函数和赋值表达式

1、用一个已存在的对象去构造一个不存在的对象(构造之前不存在),就是拷贝构造。用一个已存在的对象去覆盖另一个已存在的对象,就是赋值运算。

String(const char *str = NULL);// 普通构造函数

String(const String &other); // 拷贝构造函数

拷贝构造函数将在对象传值,返回值,抛出异常中被调用。

2、“引用”不可能是NULL,而“指针”可以为NULL

注意函数strlen返回的是有效字符串长度,不包含结束符‘\0’。函数strcpy则连‘\0’一起复制。

3、应该为所有包含动态分配成员的类都提供拷贝构造函数,析构函数,赋值运算符。

4、拷贝构造函数与赋值运算符

A b=a;   //拷贝构造函数调用

A b(a);   //拷贝构造函数调用

b =a;   //赋值运算符调用

5、对于一个类X, 如果一个构造函数的第一个参数是下列之一:

a) X&

b) const X&

c) volatile X&

d) const volatile X&

且没有其他参数或其他参数都有默认值,那么这个函数是拷贝构造函数。

原文:

http://blog.csdn.net/lwbeyond/article/details/6202256

http://blog.163.com/zhoumhan_0351/blog/static/39954227201032845132592/

http://baike.baidu.com/view/1266959.htm

posted @ 2012-11-04 17:12  浪里飞  阅读(227)  评论(0编辑  收藏  举报