2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > C++动态空间申请 动态对象(new与delete运算)

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

时间:2022-08-21 03:36:11

相关推荐

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

文章目录

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

一、动态空间申请

#include <iostream>#include <string.h>#include <stdlib.h> //需要用到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 <iostream>#include <string.h>#include <stdlib.h> //需要用到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();}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。