当前位置: 首页 > news >正文

立水桥大型网站建设深圳建设官方网站

立水桥大型网站建设,深圳建设官方网站,海南哪家公司做网站做的好,郏县网站制作公司目录 前言初始化和清理的概念构造函数和析构函数的作用构造函数的作用析构函数的作用 使用构造函数和析构函数的注意事项默认的构造函数和析构函数结束语 前言 在使用c语言开发的项目场景中#xff0c;我们往往会遇到申请空间的需求#xff0c;同时也肯定遇到过程序运行一段… 目录 前言初始化和清理的概念构造函数和析构函数的作用构造函数的作用析构函数的作用 使用构造函数和析构函数的注意事项默认的构造函数和析构函数结束语 前言 在使用c语言开发的项目场景中我们往往会遇到申请空间的需求同时也肯定遇到过程序运行一段时间后会卡死崩溃的情况分析下来大概率可能是内存堆空间容量不够用所导致我们作为开发人员在设计时往往在写了malloc申请函数之后会容易忘记释放该申请的内存堆空间。但是上述问题往往在c中可以得到很好解决。 初始化和清理的概念 当对象产生时必须初始化成员变量当对象销毁前必须清理对象初始化用构造函数清理用析构函数这两个函数是编译器调用 构造函数和析构函数的作用 构造函数的作用 先看代码 class Maker { public:Maker(){a 10;cout 构造函数 endl;}~Maker(){cout 析构函数 endl;} public:int a; };void test01() {Maker m;int b m.a;cout b endl; }好按照老样子接下来开始详细讲解每行代码的用处以及为什么这样写 void test01() {Maker m;int b m.a;cout b endl; }Maker m;//首先实例化对象并且该实例化对象为m。 int b m.a; cout b endl;//将实例化对象m的成员变量a赋值给b并且将b打印出来。 class Maker { public:Maker(){a 10;cout 构造函数 endl;}~Maker(){cout 析构函数 endl;} public:int a; };Maker(){a 10;cout 构造函数 endl;}//该函数即构造函数构造函数的作用时初始化成员变量并且是编译器自动调用的即只要我们实例化对象之后则编译器会自动调用构造函数进行初始化。 //构造函数的作用其实就类似与我们使用c语言开发时使用的malloc()函数 //在该构造函数中主要将10赋值给a。 ~Maker() {cout 析构函数 endl; }//该函数为析构函数析构函数的作用其实就类似与我们使用c语言开发时使用的free()函数所以在对象销毁前编译器同样会自动调用析构函数。 接下来我们看下上述代码的执行结果如何 由上图可知 确实会如同我们在前面讲述一样系统编译器会自动调用构造函数和析构函数。 析构函数的作用 先看代码 class Maker2 { public:Maker2(const char *name,int age){cout 有参构造 endl;pName (char*)malloc(strlen(name) 1);strcpy(pName, name);mAge age;}void printMaker2(){cout name: pName age: mAge endl;}~Maker2(){cout 析构函数 endl;if (pName ! NULL){free(pName);pName NULL;}} private:char *pName;int mAge; };void test02() {Maker2 m2(翠花,18);m2.printMaker2(); }好按照老样子接下来开始详细讲解每行代码的用处以及为什么这样写 void test02() {Maker2 m2(翠花,18);m2.printMaker2(); }//首先实例化对象并且该实例化对象为m2。 //并且这里调用的是有参构造函数的方法将翠花和18作为有参构造函数的形参传进去。 //调用类中的printMaker2函数将pName 和mAge 打印出来。 Maker2(const char *name,int age) {cout 有参构造 endl;pName (char*)malloc(strlen(name) 1);strcpy(pName, name);mAge age; }//该函数为构造函数并且使用的和上一个程序中构造形式不同使用的是有参构造其中有两个形参分别是char类型的指针变量name和int类型的age。 pName (char*)malloc(strlen(name) 1);//使用malloc函数在堆区中申请一段空间用来存放通过形参传入的name值。 strcpy(pName, name);//将name指向的那段内存空间的内容复制到pName指向的那段内存空间中即pName指向的那段内存空间中存放了真正传入该函数的name值。 mAge age;//简单的赋值操作。 ~Maker2() {cout 析构函数 endl;if (pName ! NULL){free(pName);pName NULL;} }//该函数为析构函数在该函数中首先判断在构造函数申请的堆区空间有没有申请成功如果申请成功则会调用free函数去释放掉该空间并且将其指针指向NULL。 接下来我们看下上述代码的执行结果如何 由上图可知 确实会如同我们在前面讲述一样系统编译器会自动调用构造函数和析构函数。同时成功传入参数。 使用构造函数和析构函数的注意事项 构造函数和析构函数的权限必须是公有的构造函数可以重载构造函数没有返回值不能用void,构造函数可以有参数析构函数没有返回值不能用void,没有参数有对象产生必然会调用构造函数有对象销毁必然会调用析构函数。有多少个对象产生就会调用多少次构造函数有多少个对象销毁就会调用多少次析构函数 默认的构造函数和析构函数 先看代码 class Maker { public:Maker()//默认的构造函数函数体是空的{}~Maker()//默认的析构函数函数体也是空{}//编译器默认提供默认的构造函数和析构函数void printfMaker(){a 100;cout a a endl;} private:int a; };//即使我们在类中没有声明构造函数或者析构函数也没关系编译器中已经设置了默认的构造函数和析构函数只不过在这两个函数体中都是空的不做任何处理。 结束语 如果觉得这篇文章还不错的话记得点赞 支持下
http://www.zqtcl.cn/news/693254/

相关文章:

  • 优化seo网站高质量的邯郸网站建设
  • 网站开发 合同范本软件设计专业介绍
  • 南山网站建设设计莱州网站建设关键字排名优化网络托管微信代运营
  • 传统门户网站有哪些网络营销公司全网推广公司
  • 桥头镇网站建设卢松松外链工具
  • 手机网站导航设计大连市自然资源局
  • 装修网站vr全景图怎么做软件工程师证书报考条件
  • 部门网站建设管理经验交流材料定制开发app
  • 做网站 就google权重查询
  • 网站制作 福宁网络有限公司绚丽的网站
  • wordpress ip 访问重庆seo顾问服务
  • 灰色调网站自动seo系统
  • 河北省网站建设公司排名企业网络信息安全
  • 郑州网站定制建个微商城网站
  • 北京好网站制作公司哪家好vs加数据库做网站
  • 电子商务网站建设与管理第四章答案seo入门培训学校
  • 温州最便宜网站建设有哪些网站可以做推广
  • 郑州网站建设制作公司wordpress播放m3u8
  • wordpress企业站手机客户端wordpress获取主页路径
  • 免费开通的网站外国网站在中国做推广
  • 揭阳公司做网站泰国网站域名
  • 上海网站制作方法北京网站制作设计推广公司
  • 衡水哪有建网站的吗个人简历word模板
  • 网站建设前期开发企业网站开发丨薇
  • 流程图 网站做网站后台数据库建设
  • 免费做英语卷子的网站wordpress去谷歌插件
  • 做网站费用网站极简设计
  • 兰州市建设工程安全质量监督站网站优化公司治理
  • 高质量的合肥网站建设天津百度网站快速优化
  • 千元低价网站建设wordpress修改文章时间