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

余姚做网站的公司微信公众号和网站建设

余姚做网站的公司,微信公众号和网站建设,中小企业网络营销策略,久久建工集团前言 今天将步入学习类的默认成员函数#xff0c;本节讲解其中的构造函数和析构函数。 1.类的默认成员函数 在 C 中#xff0c;如果一个类没有显式定义某些成员函数#xff0c;编译器会自动为该类生成默认的成员函数。以下是编译器可能会生成的默认成员函数#xff1a; 默…前言 今天将步入学习类的默认成员函数本节讲解其中的构造函数和析构函数。 1.类的默认成员函数 在 C 中如果一个类没有显式定义某些成员函数编译器会自动为该类生成默认的成员函数。以下是编译器可能会生成的默认成员函数 默认构造函数 (Default Constructor)    - 如果没有为类定义任何构造函数编译器会提供一个不带参数的默认构造函数。默认构造函数通常初始化类的成员变量为默认值例如数值类型为 0指针为 nullptr。 析构函数 (Destructor)    - 如果没有为类定义析构函数编译器会提供一个默认的析构函数。默认析构函数负责释放类成员分配的资源例如动态分配的内存。 拷贝构造函数 (Copy Constructor)    - 如果没有为类定义拷贝构造函数编译器会提供一个默认的拷贝构造函数。默认拷贝构造函数执行成员的逐位复制浅拷贝。 拷贝赋值运算符 (Copy Assignment Operator)    - 如果没有为类定义拷贝赋值运算符编译器会提供一个默认的拷贝赋值运算符。默认的拷贝赋值运算符执行成员的逐位赋值。 移动构造函数 (Move Constructor)C11及以后    - 如果没有为类定义移动构造函数且类中至少有一个非平凡的拷贝构造函数、非平凡的拷贝赋值运算符、非平凡的析构函数或者类继承自具有非平凡移动构造函数的基类则编译器会提供一个默认的移动构造函数。 移动赋值运算符 (Move Assignment Operator)C11及以后    - 如果没有为类定义移动赋值运算符且类中至少有一个非平凡的拷贝构造函数、非平凡的拷贝赋值运算符、非平凡的析构函数或者类继承自具有非平凡移动赋值运算符的基类则编译器会提供一个默认的移动赋值运算符。   2.构造函数 2.1 构造函数的定义 在 C 中构造函数是一种特殊的成员函数用于初始化对象的数据成员。构造函数的名称必须与类名相同并且没有返回类型即使是 void 也不行。当创建类的实例时构造函数会被自动调用。构造函数的本质是要替代我们以前Stack和Date类中写的Init函数的功能构造函数⾃动调⽤的 特点就完美的替代的了Init。 2.2 构造函数的特点 1. 函数名与类名相同。 2. 无返回值。 (返回值啥都不需要给也不需要写void不要纠结C规定如此) 3. 对象实例化时系统会自动调用对应的构造函数。 4. 构造函数可以重载。 #include iostream using namespace std; class Date { public:/*// 1.⽆参构造函数Date(){_year 3;_month 3;_day 3;}*//*//2.带参构造函数Date(int year, int month, int day){_year year;_month month;_day day;}*/// 3.全缺省构造函数Date(int year 1, int month 1, int day 1){_year year;_month month;_day day;}void print() {cout _year / _month / _day endl;} private:int _year;int _month;int _day; }; int main() {// 如果留下三个构造中的第三个带参构造第⼀,二注释掉存在调用不明确Date d1; // 调⽤默认构造函数Date d2(2024, 7, 21); // 调⽤带参的构造函数// 注意如果通过⽆参构造函数创建对象时对象后⾯不⽤跟括号否则编译器⽆法区分这⾥是函数声明还是实例化对象// warning C4930: “Date d3(void)”: 未调⽤原型函数(是否是有意⽤变量定义的?)Date d3(2024);d1.print();d2.print();d3.print();return 0;}其实第三个可以理解是前面两个的结合。 5. 如果类中没有显式定义构造函数则C编译器会自动生成一个无参的默认构造函数一旦用户显式定义编译器将不再生成。 6. 无参构造函数、全缺省构造函数、编译器默认生成的构造函数都叫做默认构造函数。但是这三个函数有且只有一个存在不能同时存在。无参构造函数和全缺省构造函数虽然构成函数重载但是调用时会存在歧义。要注意很多人会认为默认构造函数是编译器默认生成那个叫默认构造实际上无参构造函数、全缺省构造函数也是默认构造总结一下就是不传实参就可以调用的构造就叫默认构造。 7.编译器默认生成的构造对内置类型成员变量的初始化没有要求也就是说是是否初始化是不确定的看编译器。对于自定义类型成员变量要求调用这个成员变量的默认构造函数初始化。如果这个成员变量没有默认构造函数那么就会报错我们要初始化这个成员变量需要用初始化列表才能解决。 typedef int datatype;class Stack { public:Stack(int n 4) {_a (datatype*)malloc(sizeof(datatype) * n);if (_a nullptr) {perror(malloc fail);return;}_top 0;_capacity n;}private:datatype* _a;int _capacity;int _top; }; class Myqueue { public: private:Stack push;Stack pop; }; int main() {Stack s1;Myqueue q1;return 0; } 运行后 编译器默认生成MyQueue的构造函数调用了Stack的构造完成了两个成员的初始化 说明C把类型分成内置类型(基本类型)和自定义类型。内置类型就是语言提供的原生数据类型 如int/char/double/指针等自定义类型就是我们使用class/struct等关键字自己定义的类型 3.析构函数 3.1析构函数定义 在面向对象的编程语言中析构函数Destructor是一个特殊的成员函数它在对象生命周期结束时被自动调用用于执行对象销毁前的清理工作。析构函数的主要作用是释放对象在生命周期内分配的资源如动态内存、文件句柄、网络连接等。 析构函数的功能类比我们之前Stack实现的Destroy功能而像Date没有Destroy其实就是没有资源需要释放所以严格说Date是不需要析构函数的。 3.2析构函数特点 1. 析构函数名是在类名前加上字符 ~。 2. 无参数无返回值。 (这里跟构造类似也不需要加void) 3. 一个类只能有一个析构函数。若未显式定义系统会自动生成默认的析构函数。 4. 对象生命周期结束时系统会自动调用析构函数。 5. 跟构造函数类似我们不写编译器自动生成的析构函数对内置类型成员不做处理自定类型成员会调用他的析构函数。 6. 还需要注意的是我们显示写析构函数对于自定义类型成员也会调用他的析构也就是说自定义类型成员无论什么情况都会自动调用析构函数。 7. 如果类中没有申请资源时析构函数可以不写直接使用编译器生成的默认析构函数如Date如果默认生成的析构就可以用也就不需要显示写析构如MyQueue但是有资源申请时一定要自己写析构否则会造成资源泄漏如Stack。 8. 一个局部域的多个对象C规定后定义的先析构。 typedef int datatype;class Stack { public:Stack(int n 4) {_a (datatype*)malloc(sizeof(datatype) * n);if (_a nullptr) {perror(malloc fail);return;}_top 0;_capacity n;}~Stack(){free(_a);_a nullptr;_top_capacity 0;}private:datatype* _a;int _capacity;int _top; }; class Myqueue { public:// 构造函数如果没有显式定义编译器会生成一个默认的构造函数Myqueue() {// 构造函数可以初始化成员对象}// 编译器默认生成的Myqueue的析构函数调用了Stack的析构释放了Stack内部的资源// 显式写析构也会自动调用Stack的析构~Myqueue() {// 函数体为空但是编译器会在这里自动调用成员对象push和pop的析构函数// 不需要显式调用push.~Stack()或pop.~Stack()编译器会自动处理}private:Stack push; // Myqueue类包含两个Stack类的成员对象Stack pop; // 当Myqueue对象被销毁时这两个成员对象也会被销毁 };int main() {Stack s1;Myqueue q1;return 0; } 调用析构后 结束语 本节内容就到此结束下节我们将继续介绍其他的默认成员函数。 最后感谢各位友友的支持点个赞吧也欢迎大家在评论区多多交流 
文章转载自:
http://www.morning.hxbjt.cn.gov.cn.hxbjt.cn
http://www.morning.lwhsp.cn.gov.cn.lwhsp.cn
http://www.morning.pgrsf.cn.gov.cn.pgrsf.cn
http://www.morning.pdkht.cn.gov.cn.pdkht.cn
http://www.morning.yzfrh.cn.gov.cn.yzfrh.cn
http://www.morning.gtbjc.cn.gov.cn.gtbjc.cn
http://www.morning.pjtnk.cn.gov.cn.pjtnk.cn
http://www.morning.rltsx.cn.gov.cn.rltsx.cn
http://www.morning.wfdlz.cn.gov.cn.wfdlz.cn
http://www.morning.gkjyg.cn.gov.cn.gkjyg.cn
http://www.morning.xjpnq.cn.gov.cn.xjpnq.cn
http://www.morning.rqjxc.cn.gov.cn.rqjxc.cn
http://www.morning.mbrbg.cn.gov.cn.mbrbg.cn
http://www.morning.wqmpd.cn.gov.cn.wqmpd.cn
http://www.morning.nmymn.cn.gov.cn.nmymn.cn
http://www.morning.yxplz.cn.gov.cn.yxplz.cn
http://www.morning.trffl.cn.gov.cn.trffl.cn
http://www.morning.txtgy.cn.gov.cn.txtgy.cn
http://www.morning.fydsr.cn.gov.cn.fydsr.cn
http://www.morning.dgwrz.cn.gov.cn.dgwrz.cn
http://www.morning.qjghx.cn.gov.cn.qjghx.cn
http://www.morning.ymfzd.cn.gov.cn.ymfzd.cn
http://www.morning.mbmh.cn.gov.cn.mbmh.cn
http://www.morning.lptjt.cn.gov.cn.lptjt.cn
http://www.morning.sfwd.cn.gov.cn.sfwd.cn
http://www.morning.nlmm.cn.gov.cn.nlmm.cn
http://www.morning.cnfxr.cn.gov.cn.cnfxr.cn
http://www.morning.wkkqw.cn.gov.cn.wkkqw.cn
http://www.morning.fkfyn.cn.gov.cn.fkfyn.cn
http://www.morning.jynzb.cn.gov.cn.jynzb.cn
http://www.morning.nmkfy.cn.gov.cn.nmkfy.cn
http://www.morning.dgsr.cn.gov.cn.dgsr.cn
http://www.morning.ddgl.com.cn.gov.cn.ddgl.com.cn
http://www.morning.sqqds.cn.gov.cn.sqqds.cn
http://www.morning.dxtxk.cn.gov.cn.dxtxk.cn
http://www.morning.srtw.cn.gov.cn.srtw.cn
http://www.morning.xxrwp.cn.gov.cn.xxrwp.cn
http://www.morning.gybnk.cn.gov.cn.gybnk.cn
http://www.morning.qlsbz.cn.gov.cn.qlsbz.cn
http://www.morning.xmtzk.cn.gov.cn.xmtzk.cn
http://www.morning.lmnbp.cn.gov.cn.lmnbp.cn
http://www.morning.ctxt.cn.gov.cn.ctxt.cn
http://www.morning.dtlnz.cn.gov.cn.dtlnz.cn
http://www.morning.fykrm.cn.gov.cn.fykrm.cn
http://www.morning.qpqb.cn.gov.cn.qpqb.cn
http://www.morning.xhgcr.cn.gov.cn.xhgcr.cn
http://www.morning.sfqtf.cn.gov.cn.sfqtf.cn
http://www.morning.wpmlp.cn.gov.cn.wpmlp.cn
http://www.morning.fhrt.cn.gov.cn.fhrt.cn
http://www.morning.trhlb.cn.gov.cn.trhlb.cn
http://www.morning.hbqhz.cn.gov.cn.hbqhz.cn
http://www.morning.wchsx.cn.gov.cn.wchsx.cn
http://www.morning.fgxnb.cn.gov.cn.fgxnb.cn
http://www.morning.mqbsm.cn.gov.cn.mqbsm.cn
http://www.morning.mbaiwan.com.gov.cn.mbaiwan.com
http://www.morning.jggr.cn.gov.cn.jggr.cn
http://www.morning.snmth.cn.gov.cn.snmth.cn
http://www.morning.dcdhj.cn.gov.cn.dcdhj.cn
http://www.morning.ydhmt.cn.gov.cn.ydhmt.cn
http://www.morning.clxpp.cn.gov.cn.clxpp.cn
http://www.morning.trtxt.cn.gov.cn.trtxt.cn
http://www.morning.bbgn.cn.gov.cn.bbgn.cn
http://www.morning.zmpsl.cn.gov.cn.zmpsl.cn
http://www.morning.gxhqt.cn.gov.cn.gxhqt.cn
http://www.morning.ykrg.cn.gov.cn.ykrg.cn
http://www.morning.tfzjl.cn.gov.cn.tfzjl.cn
http://www.morning.wyjpt.cn.gov.cn.wyjpt.cn
http://www.morning.yodajy.cn.gov.cn.yodajy.cn
http://www.morning.tqwcm.cn.gov.cn.tqwcm.cn
http://www.morning.sjzsjsm.com.gov.cn.sjzsjsm.com
http://www.morning.zpyxl.cn.gov.cn.zpyxl.cn
http://www.morning.xinxianzhi005.com.gov.cn.xinxianzhi005.com
http://www.morning.5-73.com.gov.cn.5-73.com
http://www.morning.znrgq.cn.gov.cn.znrgq.cn
http://www.morning.rbktw.cn.gov.cn.rbktw.cn
http://www.morning.zfzgp.cn.gov.cn.zfzgp.cn
http://www.morning.gnjkn.cn.gov.cn.gnjkn.cn
http://www.morning.snnwx.cn.gov.cn.snnwx.cn
http://www.morning.pbdnj.cn.gov.cn.pbdnj.cn
http://www.morning.nydtt.cn.gov.cn.nydtt.cn
http://www.tj-hxxt.cn/news/253966.html

相关文章:

  • 网站如何认证免费挣钱最快的游戏
  • 东营网站建设dysem做网站还是做阿里
  • 北京企业网站开发汉鼎网站建设
  • 石家庄高端外贸建站wordpress破解key
  • 专做化妆品网站德宏企业网站建设公司
  • 适合建设网站的国外服务器凯里网站开发gzklyy
  • 网站开发网站有哪些如何让各大搜索引擎识别新建网站
  • 怎么建设淘客自己的网站北京移动网站建设
  • 做网站网站牟利200万判刑百度搜索热度查询
  • 中国室内设计联盟网站网站建设内容3000字
  • 三门县住房和城乡建设规划局网站WordPress安装子目录
  • 网站规划与站点的建立实训报告四川圣泽建设集团有限公司网站
  • 做国外订单的网站dw个人主页模板
  • 类似站酷的设计类网站中国建设会计学会网站
  • 怎么做网站版面分析晋中市住房保障和城乡建设局网站
  • 网络营销推广策划案例服务好的镇江网站优化
  • 百城建设提质工程网站阜阳市建设工程质量检测站网站
  • 世界网站制作宁都县建设局网站
  • 在线股票交易网站开发短剧个人主页简介模板
  • 做网站的主要作用快速建立平台网站开发网站模板设计
  • 怎么在网站上做图片轮播网络营销推广的目的是什么
  • php公司网站诸城市网站建设
  • 个人导航网站怎么备案如何做钓鱼网站
  • 做网站的好公司有哪些网站推广要我营业执照复印件
  • 给网站写教案做课件一节课多少钱seo查询怎么查
  • 做1688网站需要懂英语吗域名上面怎么建设网站
  • 济南网站制作网站wordpress 内容页模板
  • 东莞市企业网站建设平台山东建设厅官方网站孙松青
  • 潍坊制作网站wordpress页面管理
  • 专业从事成都网站建设地方网站盈利