64,637
社区成员
发帖
与我相关
我的任务
分享
struct Test{
Person p;//Person为一个类
char* s;}
那么这时候我定义:Test* t = new Test;
delete[] t;
这个时候是否p的空间也会被析构?我把对对象的构造过程省去了,就这个意思吧,求解?#include <iostream>
class Person
{
public:
~Person() { std::cout << "Person destructor called ..." << std::endl; }
};
struct Test
{
Person p;
char * s;
};
int main()
{
Test * t = new Test;
delete t;
return 0;
}
$ g++ test.cpp -o test ; ./test
Person destructor called ...
#include <iostream>
#include <cstdlib>
using namespace std;
#define C_CODE
class Person
{
public:
~Person() { std::cout << "Person destructor called ..." << std::endl; }
};
struct Test
{
Person p;
char * s;
}Test;
int main()
{
#ifdef C_CODE
cout << "c code" << endl;
struct Test * t = (struct Test*)malloc(sizeof(struct Test));
free(t);
struct Test var;
#else
cout << "c++ code" << endl;
Test * t = new Test;
delete t;
#endif
return 0;
}
无论C风格还是C++风格,无论静态还是动态,都要执行对象的构造和析构