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;};
下面对以上三种情况举例说明
输出结果
输出结果
输出结果
2析构函数
完成对象被删除前的一些清理工作
在对象的生存期结束的时候系统自动调用析构函数。
如果程序中未申明析构函数,编译器将自动产生一个默认的析构函数,其函数体为空。
析构函数的原型
~类名();
析构函数没有参数,没有返回类型。
析构函数完成了什么功能:
第一部分,是写在~类名(){}的大括号里面的内容,这部分由程序员操作,一般执行以下几点。
释放内存。delete或者free所有在这个对象生存期间产生的堆内存;
释放句柄。如各种文件(FILE *)、窗口(HANDLE)等;
catch所有的异常(调用的函数有可能产生异常),不可以让异常逃离析构函数。
frontcon函数用不了_C++复制构造函数与析构函数相关推荐
- 复制构造函数与析构函数
复制构造函数: 复制构造函数是一种特殊的构造函数,其形参为本类的对象引用,作用是用一个已存在的对象去初始化同类型的新对象 如果没有为类声明拷贝初始化构造函数,则编译器自己生成一个隐含的复制构造函数,这 ...
- 复制构造函数 与 赋值函数 的区别
构造函数.析构函数.赋值函数是每个类最基本的的函数.每个类只有一个析构函数和一个赋值函数.但是有很多构造函数(一个为复制构造函数,其他为普通构造函数.对于一个类A,如果不编写上述四个函数,c++编译器 ...
- 复制构造函数(拷贝构造函数)
也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生.对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什 ...
- c ++函数功能查询器_C ++ 17新功能和技巧
c ++函数功能查询器 目录 (Table of Contents) Introduction 介绍 Settings an integrated development environment (I ...
- 【C++】构造函数与析构函数
1. 概述 构造函数:用于初始化对象,没有返回值,函数名和类名相同,只有在对象初始化的时候才会被调用.构造函数的分类: 默认构造函数:是编译器自动生成,没有任何参数的构造函数. 有参构造函数:如果只一 ...
- c++ 复制构造函数_C++学习刷题8--复制构造函数和赋值运算符重载函数
一.前言 本部分为C++语言刷题系列中的第8节,主要讲解这几个知识点:复制构造函数和赋值运算符重载函数.欢迎大家提出意见.指出错误或提供更好的题目! 二.知识点讲解 知识点1:复制构造函数 1.当依据 ...
- 实现函数克隆_哪个更好的选择:克隆或复制构造函数?
实现函数克隆 这就是我开始撰写本文的方式. 我已经读过很多次这样的声明: "当对象引用可变的最终字段时,克隆变得很困难." 每次我在Google上搜索它时,都要了解它的确切含义,并 ...
- C++11六大函数(构造函数,移动构造函数,移动赋值操作符,复制构造函数,赋值操作符,析构函数)
转载自:http://blog.csdn.net/jofranks/article/details/17438955 版权声明:本文为博主原创文章,未经博主允许不得转载. 在C++中,有三大函数复制控 ...
- 构造函数和复制函数java_用Java复制构造函数
构造函数和复制函数java Copy Constructor in java class is a special type of constructor that takes same class ...
最新文章
- Effective_STL 学习笔记(四十三) 尽量用算法调用代替手写循环
- 30幅非常精美的海景摄影作品欣赏
- Matlab:成功解决 Inner matrix dimension must agree
- java web api 版本控制_怎么做 Web API 版本控制?
- 15岁杀人犯监狱学编程,37岁保释年薪70万
- 【转】小白级的CocoaPods安装和使用教程
- ASP.NET Core 应用发布与部署指南
- [原译]实现IEnumerable接口理解yield关键字
- SolidWorks2020无法获得下列许可SOLIDWORKS Standard.Server节点已经关闭或是没有响应。(-96,7,11003)
- 软件开发项目中如何进行风险管理
- oracle临时表的创建
- php 测试网站打开速度,JS如何测试目标网站的打开响应速度
- 命令行解析模块 以及 metavar 和dest的理解
- CCNP-OSPF中SPF(最短路径树)算法剖析,建树过程示例
- Angular快速上手
- Unity给手加入圆柱骨骼
- Cocos2d-x的学习之旅(七)更新函数Update
- 你应该看得懂的RecyclerView嵌套
- Mybatis的bind标签
- [R] R语言for循环机制
热门文章
- Go语言通过odbc驱动连接华为高斯数据库
- mda.helper.php,dedecms后台更新缓慢甚至卡死怎么办
- java 类型转换 安全_JAVA 类型转换指令
- redis springmvc mysql_redis和mysql怎么一起在springmvc里面
- php7引用计数,PHP7 引用计数 读书笔记
- 巨潮网怎么下载年报_上市公司年报(或财务报表)在哪里下载?
- idea的maven project消失解决方案
- Android 高德地图在清除所有Marker,清除某一个MarKer
- Android RecyclerView 向上偏移解决、添加自定义分割线,瀑布流,ScrollView嵌套RecyclerView滑动卡顿
- java调用kafka