【发布时间】:2012-02-12 10:33:33
【问题描述】:
以下代码调用了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();
}
输出:
A
A
F
A
~A
~A
~A
~A
谁能解释一下? 我在想应该只有三个析构函数调用。
【问题讨论】:
-
不,它没有。 ideone.com/ywGdo
-
糟糕!我用键盘..codepad.org/1OJGoYGP
-
当您的问题与 C++ 相关时,不要用“c”标记。语言不一样。