前言 C++ 学习路线,本人主要也是为了记录一下自己的学习过程
目录
一、析构函数
类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。
析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。
如果在构造函数new一些对象,就需要在析构函数进行释放掉
下面的实例有助于更好地理解析构函数的概念:
#include <iostream>
using namespace std;
class Line
{
public:
void setLength( double len );
double getLength( void );
Line(); // 这是构造函数声明
~Line(); // 这是析构函数声明
}
二、RVO、NRVO
编译进行对象传递,避免重复创建
> Xcode上玩,使用的g++编译器会进行 **返回值优化(RVO、NRVO)** 从而看不到拷贝构造函数的调用。
> 可以加入 "-fno-elide-constructors" 取消GNU g++优化
>对windows vs编译器cl.exe无效,VS Debug执行RVO,Release执行NRVO</u>
> RVO(Return Value Optimization):消除函数返回时创建的临时对象
> NRVO(Named Return Value Optimization):属于 RVO 的一种技术, 直接将要初始化的对象替代掉返回的局部对象进行操作。