44 lines
840 B
C++
44 lines
840 B
C++
#include <iostream>
|
|
#include <cstdlib>
|
|
|
|
using namespace std;
|
|
|
|
class A
|
|
{
|
|
private:
|
|
string name;
|
|
|
|
public:
|
|
A()
|
|
{
|
|
cout << "A()" << endl;
|
|
name = "no name";
|
|
}
|
|
A(const string &name)
|
|
{
|
|
cout << "A(const string &name)" << endl;
|
|
this->name = name;
|
|
cout << "name: " << name << endl;
|
|
}
|
|
~A()
|
|
{
|
|
cout << name << "~A()" << endl;
|
|
}
|
|
};
|
|
|
|
int main()
|
|
{
|
|
// A *p = new A[5];
|
|
// delete[] p;
|
|
// A *p2 = new A[4]{A("a"), A("b"), A("c"), A("d")};
|
|
// delete[] p2; // 释放数组中成员对象时,从高(地址)到低(地址)依次释放
|
|
|
|
A *a = new A("abc");
|
|
free(a); // 只是放指针指向的堆空间,不会调用对象的析构函数
|
|
|
|
char *a2 = (char *)malloc(sizeof(A));
|
|
delete a2; // 可以删除简单的 void* 指针
|
|
|
|
return 0;
|
|
}
|