
类的特殊成员函数详解
文章平均质量分 79
深入解析类的特殊成员函数,丰富的代码实践和面试实战问答
yaodix
这个作者很懒,什么都没留下…
展开
-
09_其他特殊函数
swap。原创 2025-03-28 11:12:55 · 398 阅读 · 0 评论 -
08_三五原则
【代码】08_三五原则。原创 2025-03-28 11:08:34 · 258 阅读 · 0 评论 -
07_继承中的析构
这句话的含义是:我们定义派生类的析构函数时,不用管基类部分的成员,只撤销派生类自己的成员即可(如果需要的话)。处理继承层次中的对象时,指针的静态类型可能与被删除对象的动态类型不同,可能会删除实际指向派生类对象的基类类型指针,此种行为是未定义的。从上面我们看到,当我们delete pD4的时候,先调用了派生类的析构函数,然后又自动调用了基类的析构函数。派生类的析构函数不负责撤销基类对象的成员,编译器总是显式调用派生类对象基类部分的析构函数。但是,基类指针指向派生类对象的情况又是经常遇到,不可避免的。原创 2025-03-28 11:07:42 · 736 阅读 · 0 评论 -
06_析构函数
所以,如果我们在析构函数中有清除堆数据的语句,调用两次意味着第二次会试图清理已经被清理过了的,根本不再存在的数据!如果对象被建立在堆上,系统就不会自动调用。因为显式调用析构函数不会释放Fred对象本身的内存,也就是栈内存,所以不要这么做,记住delete做了2件事情:调用析构函数和回收内存。用户显式调用析构函数的时候,只是单纯执行析构函数内的语句,不会释放栈内存,摧毁对象。系统隐式调用析构函数的时候,会加入释放栈内存的动作(而堆内存则由用户手工的释放):显式调用的时候,析构函数相当于的一个普通的成员函数。原创 2025-03-28 11:01:24 · 599 阅读 · 0 评论 -
05_移动构造和移动赋值运算符
移动构造函数的核心目的是将源对象的资源所有权转移到目标对象,这通常涉及修改源对象的状态,例如将源对象的指针置为。移动构造函数的核心目的是将源对象的资源所有权转移到目标对象,这通常涉及修改源对象的状态,例如将源对象的指针置为。从输出可以看出,原来的两次拷贝构造和析构变为了两次移动构造,这仅涉及到内存的移动,所以节省了工作。从输出可以看出,原来的两次拷贝构造和析构变为了两次移动构造,这仅涉及到内存的移动,所以节省了工作。会导致在移动构造函数中无法修改源对象的状态,从而无法完成资源的转移。原创 2025-03-28 10:55:18 · 659 阅读 · 0 评论 -
04_移动操作基础
什么是左值和右值(通俗理解)?原创 2025-03-28 10:48:00 · 991 阅读 · 0 评论 -
03_深入了解拷贝构造函数、拷贝赋值运算符
拷贝赋值运算符的返回值为引用类型比较好,在给多个对象赋值时,可以节省内存开支。定义: 如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都是默认值,则此构造函数是拷贝构造函数。不可以,根据定义,参数是指针类型的构造函数可以是转换构造函数,但不可以是拷贝构造函数。如果其参数不是引用类型,则需要拷贝实参,又需要调用拷贝构造函数,如此无限循环。拷贝赋值和移动赋值指针成员数据时,需要先释放旧数据,再将rhs赋值到旧数据。// 引用传递运行结果。// 值传递运行结果。原创 2025-03-27 14:43:41 · 612 阅读 · 0 评论 -
02_深入了解构造函数
深入了解构造函数原创 2025-03-27 13:56:15 · 606 阅读 · 0 评论 -
01_现代C++特殊成员函数
总结特殊成员函数类别及学习和面试重点。原创 2025-03-27 11:24:14 · 230 阅读 · 0 评论