C++动态空间申请、动态对象(new与delete运算)

网友投稿 726 2022-10-11

C++动态空间申请、动态对象(new与delete运算)

C++动态空间申请、动态对象(new与delete运算)

文章目录

​​一、动态空间申请​​​​二、动态对象的使用​​

一、动态空间申请

#include #include #include //需要用到malloc using namespace std;//定义一个盒子类 class Box{public: Box() //定义构造函数 { cout << "Box的无参构造" << endl; } ~Box() //定义析构函数 { cout << "Box的析构函数" << endl; } int a; //私有成员数据 };//在C语言中动态申请空间void test01(){ //用malloc申请一段动态内存空间 Box *p= (Box*)malloc(sizeof(Box)); //空间大小为类Box的大小 free(p); //使用完了释放内存空间 } //在C++语言中申请普通类型的动态空间:类型名 *p= new 类型名,p2是一个指针 void test02(){ //申请一段int类型的空间并赋值给p2指针,大小为sizeof(int) int *p2= new int; *p2= 99; cout << "*p2= " << *p2 << endl; delete p2; //使用完了释放内存空间 } //在C++语言中申请自定义类的动态空间,p3是一个对象指针 void test03(){ //申请一段Box类型的空间并赋值给p3指针,大小为sizeof(Box) Box *p3= new Box; (*p3).a= 666; cout << "p3对象中的a= " << (*p3).a << endl; delete p3; //使用完了释放内存空间 } //在C++语言中申请数组的动态空间,p4是一个数组 void test04(){ int *p4= new int[10]; //申请一段int数组类型的空间,大小为sizeof(int[10]),实际上该指针指向的是数组元素的首地址 //给数组元素赋值 for(int i=0; i<10; i++) { p4[i]= i+10; } //输出数组元素的值 for(int i=0; i<10; i++) { cout << p4[i] << " "; } cout << endl; //释放内存空间,不能直接delete p4; 这样只是释放了首元素的空间 delete []p4; }int main(){ //test01(); //test02(); test03(); test04(); return 0;}

二、动态对象的使用

#include #include #include //需要用到malloc using namespace std;//定义一个盒子类 class Box{public: Box() //定义构造函数 { cout << "Box的无参构造" << endl; } //使用初始化列表定义有参构造函数 Box(int h, int w, int len):height(h), width(w), length(len) { cout << "Box的有参构造" << endl; } ~Box() //定义析构函数 { cout << "Box的析构函数" << endl; }private: int height; //私有成员数据 int width; int length;};//定义测试函数void test(){ //申请一段Box类型的动态空间并赋值给p指针,大小为sizeof(Box) //并传入构造函数的参数 Box *p= new Box(1, 2, 3); delete p; //释放申请的内存空间 // //申请动态空间,调用无参构造的对象数组 cout << "-------------------------" << endl; Box *p2= new Box[5]; delete []p2; //释放对象数组的内存空间 } int main(){ test();}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Eurasia- 超轻量级协程框架(eurasia group)
下一篇:elasticsearch元数据构建metadata及routing类源码分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~