B
在下面的代码中,当执行返回main
from时,在案例 1 中调用了类的析构函数,但在案例 2 中没有调用fn()
。我不明白这种区别,因为当A
使用new
. 你能解释一下吗?
class B {
public:
B() {
printf(" [B] COntsructor");
}
~B() {
printf(" [B] Destructor");
}
};
class A {
public:
A() {
printf(" [A] COntsructor");
}
~A() {
printf(" [A] Destructor");
}
B Query() { return b; } /// Case 1
B* Query() { return &b; } /// Case 2
B b;
};
void fn()
{
A *a = new A();
B b = a->Query(); // case 1
B* b = a->Query(); // case 2
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
fn();
return 0;
}