析构函数,如果类中有一个指针数据成员?
C++无论何种数据,是否要delete关键看其空间是否使用new分配的。
1,函数冲定义的局部变量指针,单纯是一个局部变量是不用delete;
2,C++如果类中有一个指针数据成员,而没有用new,析构函数也是不用delete的;在类或函数中,int*,char*这些只要不是new的,也同样不用释放,系统会自动把他们占的内存释放掉,只有new的才会手动的去delete原理:int*,char*,这些定义是局部变量,存在于栈上,比如int*p;p在栈上,而且p的值也是栈的一个地址。但是当int*p=newint;这时候,p这个变量是在栈上的。但是p的值是一个地址,这个地址是堆上的一个地址。如果不deletep;那么,这个地址会一直被占用着,不能被其他的对象所使用,所以我们用完这个地址,要把这个地址释放掉。因此栈的空间会自动释放,而堆里的空间必须手动释放。
设计一个用于人事管理的People人员类?
二 系统设计创建了两个类来实现程序要求,1为People类,定义了一个人员的各种信息,2为Main类,定义了各种操作函数,main函数里用switch来选择操作函数。实现了以下功能:人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1程序对所有人员有提升级别的功能月薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成 ,销售经理既拿固定月薪也领取销售提成能显示全部人员信息能按姓名或者编号显示、查找、增加、删除或者删除全部人员和保存各类人员的信息显示负责人联系方式信息整合保存成a.txt文件读取a.txt文件源码下载地址:https://www.write-bug.com/article/114.html
析构函数与构造函数的区别?
构造函数是在创建对象时,用于对对象进行初始化的一种特殊函数。它的名称必须与类名称相同,没有返回值,也不需要显式地调用。构造函数可以有多个,它们可以根据参数的不同进行重载。在构造函数中,可以对对象成员变量进行初始化,也可以进行其他必要的初始化操作。
析构函数:
析构函数是在对象被销毁时,用于对对象进行清理和释放资源的一种特殊函数。它的名称与类名称相同,但在名称前加上一个波浪号(~),没有返回值,也不需要显式地调用。析构函数只有一个,不能被重载。在析构函数中,可以对对象成员变量进行清理和释放资源,也可以进行其他必要的清理操作。
区别:
1.调用方式不同:构造函数在创建对象时自动调用,而析构函数在对象销毁时自动调用。
2.作用不同:构造函数用于对对象进行初始化,而析构函数用于对对象进行清理和释放资源。
3.函数名不同:构造函数的名称必须与类名称相同,而析构函数的名称必须在类名称前加上一个波浪号(~)。
4.个数不同:构造函数可以有多个,可以根据参数的不同进行重载,而析构函数只有一个,不能被重载。
总之,构造函数和析构函数是C++面向对象编程中的两个重要的概念,它们分别用于对对象进行初始化和清理和释放资源,它们的调用方式、作用、函数名和个数都有所不同。
怎么往对象中的析构函数传参数?
析构函数的写法是固定的,一般无需用户手动调用,所以没法传入参数。如果你的目的是在该对象析构之前做一些依赖其它对象的操作,那么,可以先将其它对象的指针或者引用设置为该对象的一个成员,这样你在析构函数中就可以使用这个成员进行操作了。
析构函数与构造函数的相同点?
构造函数是一个特殊的成员函数,能够自动初始化对象。 析构函数是在一个销毁对象时自动调用的成员函数。 通俗地讲,构造函数就是在对象刚诞生时执行的函数,析构函数则是在对象将被破坏(消亡)前执行的函数。
还没有评论,来说两句吧...