- 博客(4)
- 收藏
- 关注
原创 类和对象中的拷贝构造函数和赋值运算符重载
对于Stack类型之类的,它的成员变量指向了资源,则需要我们自己显示的写拷贝构造函数,因为编译器自动生成的拷贝构造进行的是浅拷贝,会发生被拷贝对象和拷贝对象的数组指针同时指向一个空间,当两个对象都析构时会对一个空间析构两次,这是不被允许的,因为当发生第一次析构时,这份空间可能被申请走了,当第二次析构时则会把非法的空间给释放掉,同时,我们改变了一个类里面的内容,另外一个类也同时会被改变,所以我们需要自己显示的写拷贝构造同时完成深拷贝。一、赋值运算符重载的参数最好写成对当前类的引用,这样能减少拷贝。
2025-01-18 19:42:44
339
原创 类和对象中的构造函数和析构函数
这里我们要知道,析构函数不是对实例化对象本身的销毁,因为函数栈帧结束时局部对象就释放了,析构函数是完成实例化对象中资源的释放,C++规定在对象销毁时会自动调用类的析构函数来释放申请的资源,析构函数就像C语言中的destroy功能。以下面的为例子,我们想要用两个栈来实现一个队列,当我们实例化一个MyQueue对象时,这里我们没有自己写默认构造函数,编译器默认生成MyQueue的构造函数调用了Stack的默认构造函数,对两个Stack成员变量进行了初始化。上面的日期类的默认构造函数还有一个更nice的写法。
2025-01-11 18:51:07
381
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人