声明:注明代码 出处http://www.weixueyuan.net/view/6347.html
当我们需要为类对象动态分配存储空间时,我们应该使用C++语言提供的new与new[]操作符,而不要使用C语言提供的malloc函数。
C++语言提供的new和new[]操作符则不会如此,使用它们为对象分配存储空间的同时,它们也会调用相应的构造函数。
操作符delete和delete[]在释放对象存储空间的同时也会调用析构函数,而free函数则不会调用析构函数
- #include<iostream>
- using namespace std;
- class test
- {
- public:
- test(int i = 1){num = i;cout<<num<<" Constructor"<<endl;}
- ~test(){cout<<num<<" Destructor"<<endl;}
- private:
- int num;
- };
- int main()
- {
- test * t0 = new test(0);
- test * t1 = new test[5];
- test * t2 = (test *)malloc(sizeof(test));
- delete t0;
- delete[] t1;
- free(t2);
- return 0;
- }
0 Constructor
1 Constructor
1 Constructor
1 Constructor
1 Constructor
1 Constructor
0 Destructor
1 Destructor
1 Destructor
1 Destructor
1 Destructor
1 Destructor