frontcon函数用不了_C++复制构造函数与析构函数

想用机器人赋能未来,少不了扎实的编程的基本功,让我们跟着清华大学的C++语言程序设计课程一起过一遍C++的语法知识吧!

当定义基本类型的变量时,经常会用已有的变量去初始化新定义的变量,当定义对象的时候也有类似的需求,这时候就需要复制构造函数。

1复制构造函数

复制构造函数是一种特殊的构造函数,其形参为本类的对象引用。作用是用一个已存在的对象去初始化同类型的新对象。

Class 类名{Public:类名(形参);//构造函数类名(const 类名 &对象名);//复制构造函数};类名::类(const 类名 &对象名)//复制构造函数的实现{函数体}

复制构造函数被调用的三种情况

  • 一、定义一个对象时,以本类另一个对象作为初始值,发生复制构造;

  • 二、如果函数的形参是类的对象,调用函数时,将使用实参对象初始化形参对象,发生复制构造;

  • 三、如果函数的返回值是类的对象,函数执行完成返回主调函数时,将使用return语句中的对象初始化一个临时的无名对象传递给主调函数,此时发生复制构造。

  • 隐含的复制构造函数

如果程序员没有为类声明拷贝初始化构造函数,则编译器自己生成一个隐含的复制构造函数。

这个构造函数执行的功能是:用初始值对象的每个数据成员,初始化将要建立的对象的对应的数据成员。

如果不希望对象被复制构造

C++98做法:将复制构造函数声明为private,并且不提供函数的实现。

C++11做法:用”=delete”指示编译器不生成默认复制构造函数。

例:

Class Point {//Point 类的定义public:Point(int xx=0,int yy=0){ x = xx;y=yy;}Point(const Point&p)=delete;//指示编译器不生成默认复制构造函数private: int x,y;};

下面对以上三种情况举例说明

6d91383f04eb0f9e5b99e54cfa1aed7b.png

输出结果

083c1db6b54094c81497e387beb3319b.png

ea4643a29e1885479a7b3d4748e50972.png

输出结果

42cef6bb2c62eec894cf3677303ef3ea.png

3b6378ef6114447a4bee0c735a02f4b6.png

输出结果

781104e96afbffca2e2de72118d4b208.png

2析构函数

完成对象被删除前的一些清理工作

在对象的生存期结束的时候系统自动调用析构函数。

如果程序中未申明析构函数,编译器将自动产生一个默认的析构函数,其函数体为空。

析构函数的原型 

~类名();

析构函数没有参数,没有返回类型。

析构函数完成了什么功能:

第一部分,是写在~类名(){}的大括号里面的内容,这部分由程序员操作,一般执行以下几点。

  • 释放内存。delete或者free所有在这个对象生存期间产生的堆内存;

  • 释放句柄。如各种文件(FILE *)、窗口(HANDLE)等;

  • catch所有的异常(调用的函数有可能产生异常),不可以让异常逃离析构函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在京东上买的手机然后申请退货的经历

在京东上买的手机,是支持7天无理由退货的类型的。试用了一下感觉不是太喜欢,就选择退货了。 具体情况如下:先在网上填申请,然后等电话通知什么时候把手机给负责人,给过负责人之后,负责人先检查外观等是否符…

mysql tungsten_使用tungsten将mysql的数据同步到hadoop

背景线上有很多的数据库在运行,后台需要一个分析用户行为的数据仓库。目前比较流行的是mysql和hadoop平台。现在的问题是,如何将线上的mysql数据实时的同步到hadoop中,以供分析。这篇文章就是利用tungsten-replicator来实现。环境由于tungste…

软件项目立项书_2019年度上海市软件和集成电路产业发展专项资金项目立项

上海艾瑞德生物科技有限公司荣获2019年上海市软件和集成电路产业发展专项资金(集成电路和电子信息制造领域)项目立项!上海艾瑞德生物科技有限公司的【医用体外诊断动态光场图像采集电子模块的研发及产业化】喜获2019年上海市软件和集成电路产业发展专项资金(集成电路…

line-height:1.5和line-height:150%的区别

1. 给你个数,孩子自己算吧 line-height:1.5 父元素设置line-height:1.5会直接继承给子元素,子元素根据自己的font-size再去计算子元素自己的line-height。 2.老子说多大就是多大 line-height:150% 父元素设置line-height:150%是计算好了line-height值&…

mysql提供了表示日期和时间的数据类型_MySQL数据类型 - 日期和时间类型(1)

1.日期和时间数据类型语法用于表示时间值的日期和时间数据类型是DATE, TIME, DATETIME, TIMESTAMP和 YEAR。对于TIME, DATETIME和 TIMESTAMP值,MySQL支持小数秒,精度可达微秒(6位数)。要定义包含小数秒部分的列,请使用语法type_name(fsp)&…

软件质量保证计划_CMMI V2.0 精讲之“过程质量保证”

过程质量保证(PROCESS QUALITY ASSURANCE, PQA)目的:验证并改进已执行的过程和所产生的工作产品的质量。价值:增强过程使用和改进的一致性,以最大限度地提高业务效益和客户满意度。实践概述第1级PQA 1.1识别并解决过程和工作产品问题。第2级P…

mysql gzip_在mysql中存储GZIP:ed文本?

Is it a common thing for bigger applications and databases to GZIP text data before inserting it to the database?Ill guess that any full-text search on the actual text field will not be working before unzipping it again?解决方案Ive not seen this done muc…

07.30《jQuery》——1.1DOM对和jQuery对象的转化

1.dom对象--->jQuery对象 $(DOM对象):是把DOM对象转化成JQuery对象 演示代码 //1.dom对象---->jQuery对象 var div1 document.getElementById("div1"); var $div1 $(div1); alert($div1.html());// $div1.width() jQuery对象实质就是map、关联数组 Dom对象是…

mysql数据库持续_MySql数据库--持续记录ing

1 基本,引擎,数据类型,运算1.1 基本操作启动:net start mysql停止:net stop mysql连接: mysql –uroot -h127.0.0.1 -proot断开连接:quit; 或 exit;查询支持的存储引擎:show engines; 或 show v…

html 分页_JQuery堪称完美的分页函数

演示效果&#xff1a;html部分&#xff08;引入jquery.js&#xff09;<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>jQuery简单的分页插件</title> </head><link rel"stylesheet" href"…

mysql 8.0.12解压版安装教程_mysql 8.0.12 解压版安装教程

本文为大家分享了mysql 8.0.12 解压版安装教程&#xff0c;供大家参考&#xff0c;具体内容如下1、首先在官网上下载mysql8.0.12的压缩包&#xff1a;下载地址2、下载成功后解压到任意目录&#xff0c;比如我的是E:\download\mysql-8.0.12-winx64&#xff1b;3、配置环境变量&a…

python 修改图片尺寸_python 批量修改图片大小

一个文件夹下面有好多图片格式是jpg大小是1920*1080&#xff0c;把它们处理成1280*720并按原先图片的名保存在另一路径下 这里首先要找到给定路径下所有的图片文件&#xff0c;然后在修改图片文件的大小&#xff0c;这里用到PIL和glob两个库&#xff1a; # -*- coding: utf-8 -…

简洁又快速地处理集合——Java8 Stream(下)

上一篇文章我讲解 Stream 流的基本原理&#xff0c;以及它与集合的区别关系&#xff0c;讲了那么多抽象的&#xff0c;本篇文章我们开始实战&#xff0c;讲解流的各个方法以及各种操作 没有看过上篇文章的可以先点击进去学习一下 简洁又快速地处理集合——Java8 Stream&#xf…

java if,if...else...的应用

import java.util.Scanner; public class Dome1{public static void main (String []args ){Scanner input new Scanner (System.in );int day 0;System.out.print("请输入1~7整数:");day input.nextInt();if(day1){System.out.print("星期一");}else if…

mac mysql安装失败_Mac mysql安装失败解决方法

在mac终端通过命令安装mysql&#xff0c;提示错误&#xff0c;解决方法如下&#xff1a;(1)安装命令&#xff1a;brew install mysql(2)提示错误&#xff1a;Error:Could not create /usr/local/CellarCheck you have permission to write to /usr/local解决方法&#xff1a;su…

python入口函数的作用_python之函数中参数的作用域

学编程究竟学的是什么呢&#xff1f;在写文章的这几天也一直在思考这个问题——恐怕这也是接下来的几年一直会去思考的问题。这个问题的答案也会指导我的方法论&#xff0c;所以索性整顿一下。 现阶段我的回答是&#xff0c;发现需求&#xff0c;然后解决。 最大的需求无非是完…

容器——归纳数据

一、什么是容器 容器是 Python 中的一种特殊类型的数据&#xff0c;是用来装载数据的&#xff0c;同时它也被泛称为数据结构。 我们使用容器的目的在于&#xff0c;把它当成数据工具来使用&#xff0c;而工具的使用方式又和工具的使用场景以及我们解决问题的思维密不可分。正如…

idea lombok 离线安装_Lombok与IntelliJ IDEA干了一架,完胜

我相信前段时间&#xff0c;有更新IDEA到2020.2版本的同学&#xff0c;在安装Lombok的过程中&#xff0c;肯定遇到与Lombok无法兼容的问题&#xff0c;并且报错&#xff1a;Caused by: com.intellij.psi.PsiInvalidElementAccessException: Element: class de.plushnikov.intel…

jquery设置宽_JavaScript学习笔记(三十二) jQuery(中)

jQuery昨天讲了 jQuery 的基本选择器筛选器和属性操作今天来说一些 jQuery 别的东西元素操作创建一个元素var div $()内部插入元素// 向 div 元素中插入一个 p 元素&#xff0c;放在最后$(div).append($())// 把 p 元素插入到 div 中去&#xff0c;放在最后$(hello).appendTo(…

面向对象--内置方法

__名字__ 类中的特殊方法\内置方法 双下方法 魔术方法 magic_method 类中的每一个双下方法都有它自己的特殊意义 1.__call__ 相当于 对象() class A:def __call__(self, *args, **kwargs):print(执行call方法了) a A() a() # 对象() 相当于调用__call__方法 A()()…