52 lines
982 B
C++
52 lines
982 B
C++
// 动态创建对象(malloc / realloc / calloc 在堆中创建空间, new 关键字)
|
||
#include <iostream>
|
||
#include <cstdlib>
|
||
|
||
using namespace std;
|
||
|
||
class A
|
||
{
|
||
private:
|
||
int x;
|
||
|
||
public:
|
||
A(int x)
|
||
{
|
||
this->x = x;
|
||
cout << "A(int)" << endl;
|
||
}
|
||
~A()
|
||
{
|
||
cout << "~A()" << endl;
|
||
}
|
||
|
||
public:
|
||
void init(int x)
|
||
{
|
||
this->x = x;
|
||
cout << "init(int)" << endl;
|
||
}
|
||
void clean()
|
||
{
|
||
cout << "clean()" << endl;
|
||
}
|
||
};
|
||
|
||
int main()
|
||
{
|
||
// 1) 使用 malloc 方式创建
|
||
// cout << "A size is " << sizeof(A) << endl;
|
||
// A *a1 = (A *)malloc(sizeof(A));
|
||
// // a1->A(20); // 不允许显式调用构造函数
|
||
// a1->init(20); // 初始化数据
|
||
// a1->clean(); // 释放数据的空间
|
||
// a1->~A(); // 析构函数可以显式调用
|
||
// free(a1);
|
||
|
||
// 2) new 方式创建,delete释放
|
||
A *a1 = new A(1);
|
||
delete a1; // 用完之后直接 delete 释放空间
|
||
|
||
return 0;
|
||
}
|