64,649
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class A
{
public:
A(){cout<<"construct A"<<endl;}
~A(){cout<<"destruct A"<<endl;}
};
class B
{
public:
A a;
B(){cout<<"construct B"<<endl;}
~B(){cout<<"destruct B"<<endl;}
};
void test_A()
{
A a;
}
void test_B()
{
B b;
}
int main(void)
{
test_A();//函数结束后a的内存被收回,然后调用析构函数
test_B();//函数结束后b的内存被收回,a是b的成员,b的内存被收回,意味着b.a的内存也被收回,调用析构函数;当然调用析构函数是有合成析构函数来完成的,但没有合成析构函数的话,b.a的内存被回收后,它不会调用析构函数吗
system("pause");
return 0;
}
#include <iostream>
using namespace std;
class A
{
public:
A(){cout<<"construct A"<<endl;}
~A(){cout<<"destruct A"<<endl;}
};
class B
{
public:
A a;
B(){cout<<"construct B"<<endl;}
~B(){cout<<"destruct B"<<endl;}
};
void test_A()
{
A a;
}
void test_B()
{
B b;
}
int main(void)
{
test_A();//函数结束后a的内存被收回,然后调用析构函数
test_B();//函数结束后b的内存被收回,a是b的成员,b的内存被收回,意味着b.a的内存也被收回,调用析构函数;当然调用析构函数是有合成析构函数来完成的,但没有合成析构函数的话,b.a的内存被回收后,它不会调用析构函数吗
system("pause");
return 0;
}
#include <iostream>
using namespace std;
class A
{
public:
A(){cout<<"construct A"<<endl;}
~A(){cout<<"destruct A"<<endl;}
};
class B
{
public:
A a;
B(){cout<<"construct B"<<endl;}
~B(){cout<<"destruct B"<<endl;}
};
void test_A()
{
A a;
}
void test_B()
{
B b;
}
int main(void)
{
test_A();//函数结束后a的内存被收回,然后调用析构函数
test_B();//函数结束后b的内存被收回,a是b的成员,b的内存被收回,意味着b.a的内存也被收回,调用析构函数;当然调用析构函数是有合成析构函数来完成的,但没有合成析构函数的话,b.a的内存被回收后,它不会调用析构函数吗
system("pause");
return 0;
}