类中有指针成员 才会讨论 浅拷贝 和深拷贝问题。

浅拷贝(单纯值拷贝)

深拷贝

必须在拷贝构造中给ob2.m_name申请空间

总结

1、如果类中的成员 指向了堆区空间 一定要记得在析构函数中 释放该空间

2、如果用户 不实现 拷贝构造 系统就会提供默认拷贝构造,而默认拷贝构造 只是单纯的赋值 容易造成浅拷贝问题

3、用户记得 要实现:无参构造(初始化数据)、有参构造(赋参数)、拷贝构造(深拷贝) 、析构函数(释放空间)

拷贝构造函数的调用时机

拷贝构造函数调用的时机:旧对象 给新对象 初始化

情形1:旧对象给新对象初始化

情形2:普通对象作为函数的参数

情形3:普通对象 作为函数的返回值

vs下会发生拷贝构造:

Qt、linux不会发生拷贝: