#define _CRT_SECURE_ND_WARNINGS
#include<iostream>
using namespace std;
class Person
{
public:
Person()
{
cout << "默认构造调用" << endl;
}
Person(int a)
{
cout << "有参构造函数调用" << endl;
}
~Person()
{
cout << "析构函数调用" << endl;
}
};
void text01()
{
//Person p1;战区开辟
Person* p2 = new Person;//堆区开辟
//所有new出来的对象 都会返回该类型的指针
//malloc 返回void * 还要强制转换
//malloc不会调用构造 new 会调用构造
//new 运算符 malloc 函数
// delete 也是运算符 配合new用 malloc 配合free用
//释放 堆区空间
delete p2;
}
void text02()
{
void* p = new Person;
//当用void * 接受new出来的指针,会出现释放问题
delete p;
//无法释放p,所以避免这种写法
}
void text03()
{
//通过new开辟数组 一定会调用默认构造函数,所以一定要提供默认构造
Person* pArray = new Person[10];
//Person pArray2[2]={Person(1),Person(2)};//在栈上开辟数组,可以指定有参构造
//释放数组 delete []
delete[] pArray;
}
int main()
{
text01();
system("pause");
return EXIT_SUCCESS;
}
new运算符
最新推荐文章于 2023-04-04 16:14:01 发布