小编Ven*_*nky的帖子

返回值优化 - C++ - 析构函数调用

以下代码调用析构函数4次:

#include<iostream>
using namespace std;

class A{
   public:
   A(){cout<<"A"<<endl;}
   ~A(){cout<<"~A"<<endl;}
   A f(){cout<<"F"<<endl; A b; return b;}
};

int main(){
   A a,b;
   b=a.f();
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

A
A
F
A
~A
~A
~A
~A
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?我原以为应该只有三个析构函数调用.

c++ rvo nrvo

5
推荐指数
2
解决办法
1914
查看次数

标签 统计

c++ ×1

nrvo ×1

rvo ×1