类中有指针成员 才会讨论 浅拷贝 和深拷贝问题。
浅拷贝(单纯值拷贝)
深拷贝
必须在拷贝构造中给ob2.m_name申请空间
总结
1、如果类中的成员 指向了堆区空间 一定要记得在析构函数中 释放该空间
2、如果用户 不实现 拷贝构造 系统就会提供默认拷贝构造,而默认拷贝构造 只是单纯的赋值 容易造成浅拷贝问题
3、用户记得 要实现:无参构造(初始化数据)、有参构造(赋参数)、拷贝构造(深拷贝) 、析构函数(释放空间)
拷贝构造函数的调用时机
拷贝构造函数调用的时机:旧对象 给新对象 初始化
情形1:旧对象给新对象初始化
情形2:普通对象作为函数的参数
情形3:普通对象 作为函数的返回值
vs下会发生拷贝构造:
Qt、linux不会发生拷贝: