构造函数,拷贝构造函数,赋值函数,析构函数
2016-06-14 20:01
267 查看
C++编译器将自动为A 产生四个缺省的函数,例如:
A(void); // 缺省的无参数构造函数
A(const A &a); // 缺省的拷贝构造函数
~A(void); // 缺省的析构函数
A & operate =(const A &a); // 缺省的赋值函数
缺省是浅拷贝和浅赋值。拷贝和赋值是一样的. 当有指针的时候,会在析构的时候,两次析构一个对象造成对象,造成错误。详见
http://blog.csdn.net/fdsafwagdagadg6576/article/details/51674155
所以当有指针的时候要深拷贝.同时深赋值。即copy函数和赋值函数同时要重写。
重写详见:http://blog.csdn.net/fdsafwagdagadg6576/article/details/51674004。
class CExample {
......
};
int main()
{
CExample A(100);
CExample B = A; //注意这里的对象初始化要调用拷贝构造函数,而非赋值
CExample C;
C = A; // 赋值函数
B.Show ();
return 0;
}
拷贝和赋值:
当对象在声明的时候即用另一个对像进行初始化 即称为拷贝。如果是在声明之后,在进行赋值操作,则需要重载赋值操作符
A(void); // 缺省的无参数构造函数
A(const A &a); // 缺省的拷贝构造函数
~A(void); // 缺省的析构函数
A & operate =(const A &a); // 缺省的赋值函数
缺省是浅拷贝和浅赋值。拷贝和赋值是一样的. 当有指针的时候,会在析构的时候,两次析构一个对象造成对象,造成错误。详见
http://blog.csdn.net/fdsafwagdagadg6576/article/details/51674155
所以当有指针的时候要深拷贝.同时深赋值。即copy函数和赋值函数同时要重写。
重写详见:http://blog.csdn.net/fdsafwagdagadg6576/article/details/51674004。
class CExample {
......
};
int main()
{
CExample A(100);
CExample B = A; //注意这里的对象初始化要调用拷贝构造函数,而非赋值
CExample C;
C = A; // 赋值函数
B.Show ();
return 0;
}
拷贝和赋值:
当对象在声明的时候即用另一个对像进行初始化 即称为拷贝。如果是在声明之后,在进行赋值操作,则需要重载赋值操作符
相关文章推荐
- LIB和DLL的区别与使用
- cocos2d-x 3.x学习之Vector常用函数
- PHP封装数据库连接
- Object类源码解析
- codeforce 675C Money Transfers (思维)
- python scikit-learn计算tf-idf词语权重
- 详解Android中AsyncTask的使用
- TextView中部分添加超链接,如何处理其他部分跳转关系
- Android中的TCP协议与UDP协议
- node.js 回调函数
- HTML5 Web Workers
- jQuery 全选
- (原)mkl用到的函数
- CART
- 第十六周实践项目-阅读程序(4)
- 219. Contains Duplicate II [easy] (Python)
- JAVA实现坦克大战1.0版本
- sharepreferce支持boolean,string类型
- BZOJ2908: 又是nand
- Ubuntu远程管理(xrdp设置)(含其他)