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

个人网站名字大全大气的公司名称大全

个人网站名字大全,大气的公司名称大全,网站建设维护去哪里学,北京公司注册代理公司文章目录 析构函数1.析构函数的定义:2.析构函数的语法:3.析构函数的特性: 拷贝构造函数1.拷贝构造函数的定义:2.拷贝构造函数的语法3.拷贝构造函数的特性(1)拷贝构造函数是构造函数的一个重载形式**(这个其实也很好理解&#xff0…

文章目录

  • 析构函数
    • 1.析构函数的定义:
    • 2.析构函数的语法:
    • 3.析构函数的特性:
  • 拷贝构造函数
    • 1.拷贝构造函数的定义:
    • 2.拷贝构造函数的语法
    • 3.拷贝构造函数的特性
      • (1)拷贝构造函数是构造函数的一个重载形式**(这个其实也很好理解,由于构造函数实现的是对对象的初始化,而拷贝构造也是对对象的初始化,只不过需要把值进行拷贝,然后实现初始化,所以它们的功能是相似的,但它们的参数不同,所以它们构成函数的重载)**
      • (2)拷贝构造参数只能有一个,并且这个参数只能是类的类型对象的引用,用传值的方式,编译器会直接报错,因为传值调用会引发拷贝构造函数的无穷递归。
      • (3)如果没有自定义一拷贝构造函数编译器会自动生成一个默认的拷贝构造函数
      • (4)浅拷贝和深拷贝
  • 总结:

析构函数

1.析构函数的定义:

析构函数是为了完成清理工作的,但不是对对象本身的清理,局部对象的清理是由编译器自动完成的,析构函数是对对象中的资源的清理。

2.析构函数的语法:

~+类名()

class Stack
{
public://析构函数不需要传参过来,因为会有this指针传过来~Stack()//析构函数:~+类名(){free(_a);_a = nullptr;_size = _capacity = 0;}private:int* _a;size_t _size;size_t _capacity;
};

3.析构函数的特性:

(1)析构函数无参数无返回值
(2)一个类只有一个析构函数,若没有自定义析构函数,那么编译器会自动生成析构函数,注意:析构函数是不能重载的。(这个为挺好理解的,如果你有多个函数都能实现清理的功能,由于析构函数是编译器自动调用的,那么编译器就不知道要调用那个函数来清理对象所占的资源了)
(3)对象的生命周期结束时,编译器自动调用析构函数。
(4)编译器自动生成的析构函数,对自定义成员变量会去调用它的析构函数, 但编译器自动生成的构造函数和析构函数不会去初始化和清理内置类型/基本类型(int/char)

下面的代码如果输出~Time()这个字符串,就表示编译器自动生成的析构函数会去调用自定义类型的析构函数

class Time
{
public:~Time(){cout << "~Time()" << endl;}
private:int _hour;int _minute;int _second;
};
class Date
{
private:// 基本类型(内置类型)int _year = 1970;int _month = 1;int _day = 1;// 自定义类型Time _t;
};
int main()
{Date d;return 0;
}

在这里插入图片描述

拷贝构造函数

1.拷贝构造函数的定义:

拷贝构造,顾名思义就是对一个对象的拷贝呗。

2.拷贝构造函数的语法

类名+(参数)

Date(const Date& d)
{//防止下面赋值操作写错,给d去掉可修改的权限_year = d._year;_month = d._month;_day = d._day;
}

3.拷贝构造函数的特性

(1)拷贝构造函数是构造函数的一个重载形式**(这个其实也很好理解,由于构造函数实现的是对对象的初始化,而拷贝构造也是对对象的初始化,只不过需要把值进行拷贝,然后实现初始化,所以它们的功能是相似的,但它们的参数不同,所以它们构成函数的重载)**

(2)拷贝构造参数只能有一个,并且这个参数只能是类的类型对象的引用,用传值的方式,编译器会直接报错,因为传值调用会引发拷贝构造函数的无穷递归。

在这里插入图片描述

(3)如果没有自定义一拷贝构造函数编译器会自动生成一个默认的拷贝构造函数

(4)浅拷贝和深拷贝

下面来判断一段代码,看看这个代码能否正常运行

typedef int DataType;
class Stack
{
public:Stack(size_t capacity = 10){_array = (DataType*)malloc(capacity * sizeof(DataType));if (nullptr == _array){perror("malloc申请空间失败");return;}_size = 0;_capacity = capacity;}void Push(const DataType& data){// CheckCapacity();_array[_size] = data;_size++;}~Stack(){if (_array){free(_array);_array = nullptr;_capacity = 0;_size = 0;}}
private:DataType* _array;size_t _size;size_t _capacity;
};
int main()
{Stack s1;s1.Push(1);s1.Push(2);s1.Push(3);s1.Push(4);Stack s2(s1);return 0;
}

在这里插入图片描述
代码直接崩了,这是因为什么呢?容我慢慢道来
在这里插入图片描述
注意:当类没有涉及空间资源的开辟时,构造函数可自己写也可不写,一旦涉及资源的开辟时,构造函数必须自己写,防止出现浅拷贝问题。

总结:

今天总结了析构函数和拷贝构造函数。

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

相关文章:

  • 凡科自助建站平台wordpress 4.5.2改语言
  • 租号网站开发友情链接平台
  • 什么网站可以做英语题wordpress首页调用文章
  • 公司网站建设沈阳妇幼医院网站建设方案
  • 网站制作html代码山东住房与城乡建设部网站
  • 网站排名怎么做 知乎宝安中心图片
  • 怎样用ps设计网站模板网站和网络建设调研情况
  • 企业网站制作正规公司如何提交网站地图
  • dedecms双语网站网站怎么做排查修复
  • 松花江避暑城建设网站做网站用什么系统
  • 国内精品网站建设诸城哪有做公司网站和的
  • 做游戏特效的网站wordpress 源码整合dz
  • 帮别的公司做网站违法吗做旅游网站教程
  • 房地产公司的网站建设方案盐都建设局网站
  • 餐饮培训网站建设开一个设计工作室需要什么
  • 把自己的网站卖给别人后对方做违法网页小游戏在线玩4399
  • 网站 备案规定网页设计免费网站推荐
  • 重庆网站建设公司排名博罗网站设计
  • 网站怎么接广告赚钱品牌营销策划有限公司
  • 外包公司好吗深圳市seo网站设计哪家好
  • 做企业网站的第一步需要啥wordpress国人cms
  • 网页设计与制作第四版佛山网站设计优化公司
  • 网站认证费用明星设计网站风格说明
  • 酒店管理专业建设规划温州 网站优化
  • 电子政务与网站建设的经验没有网站也可以做cpa
  • 抖音的电子商务网站建设江阴外贸网站制作
  • 成都网站制作在线响应网站模板下载
  • wordpress 网站访问认证页面江西省建设培训中心网站
  • 珠海网站建设zhkmkj北京商城网站建设公司
  • 北京建设商业网站互联网销售可以卖什么产品