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

手机网站免费制作平台有哪些外包做网站赚钱么

手机网站免费制作平台有哪些,外包做网站赚钱么,大学生创新创业ppt成品,长沙网站建设流程前言: 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数:用户没有显式实现,编译器会生成的…

前言:

如果一个类中什么成员都没有,简称为空类。
空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。
默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。

 一、构造函数

1、概念

构造函数是特殊的成员函数,需要注意的是,构造函数虽然名叫做构造,但是构造函数的主要任务并不是开空间创建对象,而是初始化对象。

2、特征

  1. 函数名与类名相同。
  2. 无返回值
  3. 对象实例化时编译器自动调用对应的构造函数
  4. 构造函数可以重载
  5. 如果类中没有显示定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显示定义编译器将不再生成。

下面代码构造函数与缺省参数结合,非常实用!

#include<iostream>
using namespace std;
class date
{
private:int _year;int _month;int _day;
public://函数名与类名相同。无返回值date(int year = 2023, int month = 1, int day = 1){_year = year;_month = month;_day = day;}void Print(){cout << _year << '-' << _month << '-' << _day;}
};int main()
{date a;date _a(1, 2, 3);a.Print();return 0;
}


但此时如果把自己定义的构造函数删除,默认生成构造函数,但是不会自己初始化。

3、默认生成的构造函数,到底有什么用?

处理自定义(回去调用这个成员的默认构造函数),但对于内置类型不确定(看编译器),建议不处理。

比如上面是自定义类型,就会自己调用Stack的默认构造函数

默认构造函数的概念:

  1. 我们不写显示构造函数,编译器默认生成的构造函数,叫默认构造
  2. 无参构造函数也可以叫默认构造
  3. 全缺省也可以叫默认构造

小总结:

内置类型成员不做处理,自定义类型会去调用它的默认构造

所以对于内置类型,还是需要程序员自己去创建构造函数,而对于自定义类型,会自动调用这个成员的默认构造函数,其实还是自己创建的构造函数

  • 内置类型:int/double/……注意指针都是内置类型
  • 自定义类型:class/struct

其实上面的构造函数并不好,对于自定义类型和构造类型区别对待,在C++11中,会支持对内置类型的初始化,在private声明的时候进行初始化。支持声明时给缺省值

总结:

  1. 一般情况下,我们都要自己写构造函数
  2. 内置类型都不处理
  3. 成员都是自定义类型,或者声明时给了缺省值,可以考虑让编译器自己生成构造函数

可以不传参数就调用构造,都可以叫默认构造,这三个函数不能同时存在,只能存在一个

二、析构函数:

1、概念

与构造函数功能相反,析构函数不是完成对对象本身的销毁,局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数,完成对象中资源的清理工作

2、特性

  1. 析构函数名是在类名前加上字符~
  2. 无参数无返回值类型
  3. 一个类只能有一个析构函数。若未显示定义,系统会自动生成默认的析构函数。注意析构函数不能重载
  4. 对象生命周期结束时,C++编译系统自动调用析构函数。

3、功能

对象销毁不需要析构函数,对象的销毁靠系统,更本质一点是函数栈帧的销毁,而析构函数的作用是处理动态开辟的空间,比如栈开辟的动态的空间。

我们如果不写析构函数,那系统自动默认生成的析构函数,不会把开辟的指针处理

默认生成析构函数,行为跟构造类似,内置类型成员不做处理,自定义类型成员会去调用他的析构

三、拷贝构造函数

概念:

我们在创建对象时,创建一个与已经存在对象一模一样的新对象。

那我们为什么要创建一个与已经存在的对象一模一样的新对象呢?

问题:

举个例子

下面的程序会报错。

我们已经在上一章学习过了析构函数,析构函数的作用是处理动态开辟的空间,比如栈开辟的动态的空间。下图是栈的析构函数。

我们来分析一下,因为上面的函数是传值传参,而形参是实参的一份临时拷贝,所以本来st1中含有的_a空间,而st中也复制拷贝了一份,st中同样的_a也指向了相同动态开辟数组a的空间,而析构函数会自动清理动态开辟的空间,所以在fun2函数调用后会将动态开辟的a的空间释放,将其变成空指针,而在主函数调用后,也会调用析构函数,所以就会造成空间的二次释放

所以值拷贝/浅拷贝对栈这些类是有风险的,那我们如何解决这一问题呢?

规定,自定义类型对象拷贝的时候,调用一个函数,这个函数就叫做拷贝构造。

拷贝构造函数:只有单个形参,该形参是对本类类对象的引用(一般常用const修饰)

为什么一定是引用?

因为不是引用,如果是传值拷贝,会引发无穷递归调用。

下面是日期的拷贝构造函数,是浅拷贝

 Date(const Date& d){_year = d._year;_month = d._month;_day = d._day;}

对于日期这样的类,编译器自动生成的默认拷贝构造函数(浅拷贝/值拷贝)就可以解决问题。

但是我们祖师爷创建拷贝构造函数的目的就是针对栈、队列等自定义类型中需要我们自己创建的空间被析构两次的问题

调用顺序就是如果传值传参,会调用拷贝构造,然后再调用func函数

解决方法:

下面是栈的拷贝构造函数

所以会创建一个相同资源的空间,分别析构,就不会造成统一空间被析构两次的问题了。

总结:

  • 内置类型成员完成值拷贝(Data)
  • 自定义类型成员调用这个成员的拷贝构造(MyQueue)
  • Stack需要自己写拷贝构造,完成深拷贝
  • 顺序表、链表、二叉树等自己创建空间的类,都需要深拷贝

http://www.yayakq.cn/news/982135/

相关文章:

  • 学做蛋糕什么网站图片1600px做网站
  • 做vi的网站买域名必须买服务器吗
  • 苗木公司网站模板优化品牌seo关键词
  • 广州网站建设大公司湖北企业模板建站开发
  • 挪威网站后缀增加网站访客
  • 濮阳中强网站建设国外摄影网站推荐
  • 邯郸网站推广龙华网站建设价格
  • 流量多网站公司网站建设费如何入账
  • 温州网站建设 首选国鼎网络好效果图网站排行榜前十名
  • 单网页网站建设网站都需要准备什么材料
  • 微信 公司网站 怎么做注册了域名之后如何建立一个网站
  • 免费php网站源码中国最新军力排名
  • 江宁外贸网站建设论述营销型网站的评价标准
  • 电子网站模板网站关键词如何快速上首页
  • 天津和平做网站多少钱移动端cpu天梯图2021
  • 莆田网站建设方案服务一个网站做各种好玩的实验
  • 公司如何做自己的网站36kr wordpress主题
  • 游泳池建设有专门的网站吗正规app开发价格表
  • 深圳住房和城乡建设厅网站微博营销的定义
  • 单位网站建设典型材料番禺做网站要多少钱
  • 俄文网站开发怎样在工商局网站上做网登
  • 电子商务网站建设策划书范文网站建设公司营业执照
  • 电商网站人员配置西部数码网站管理助手破解版
  • 自己做网站图片存在哪里电子商务安全问题 网站权限管理
  • 网站建设套餐方案小公司怎样自己建网站
  • 国内免费商用图片的网站如何去掉wordpress的评论
  • 制作网站一般要多少钱建筑模板的作用
  • 沈阳制作网站iis怎么搭建asp网站
  • 地方性小网站的建设多屏网站建设
  • 网站备案信息页面艾艺app开发公司