我在B站学习 清华大学教授带你学习c++(进阶)构造函数

B站av11459203的一系列视频,跳过了基础篇直接进入进阶,从此难度开始加大。这里做出一些笔记分享一下。

我是1.25速度看的。。对应分P 37-38

构造函数的作用

将对象初始化为一个特定的初始状态。

构造函数的形式

函数名与类名相同

不能定义返回值类型,也不能有return语句

有形式参数,也可以没有形式参数

可以是内联函数

可以重载

可以带默认参数值

函数的调用时间

在对象创建时被自动调用

隐含生成的构造函数

如果程序中未定义构造函数,编译器将在需要时自动生成一个默认构造函数

参数列表为空,不为数据成员设置初始值;

如果类内定义了成员的初始值,则使用内类定义的初始值;

如果没有定义类内的初始值,则以默认方式初始化;

基本类型的数据默认初始化的值是不确定的。

"=default"

如果程序中已定义构造函数,默认情况下编译器就不在隐含生成默认构造函数,如果此时还是希望生成默认构造函数,则

1 class Clock{
2 public:
3     Clock()=default;
4     Clock(int newH,int newM,int newS);
5 private:
6     int hour,minute,second;
7 };

构造函数的实现

Clock::Clock(int newH,int newM,int newS):hour(newH),minute(newM),second(newS){
}

实际上:后面的东西叫初始化列表

委托构造函数

允许构造函数调用同一个类的其他构造函数,该构造函数必须放在构造函数初始化器中

1 Clock():Clock(0,0,0)

复制构造函数

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

class 类名 {

public :

    类名(形参);//构造函数

    类名(const  类名 &对象名);//复制构造函数

    //       ...

};

类名::类( const  类名 &对象名)//复制构造函数的实现

{    函数体    }

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

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

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

用“=delete”指示编译器不生成默认复制构造函数

原文地址:https://www.cnblogs.com/yinghualuowu/p/8503504.html

时间: 2024-10-06 00:53:24

我在B站学习 清华大学教授带你学习c++(进阶)构造函数的相关文章

程序员带你学习安卓开发,十天快速入门-基础知识(四)

关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到熟悉的效果. 本系列课程是.Net程序员学习安卓开发系列课程. 下面是前三次课程列表: 程序员带你学习安卓开发,十天快速入门-安卓学习必要性 程序员带你学习安卓开发,十天快速入门-开发工具配置学习 程序员带你学习安卓开发,十天快速入-对比C#学习java语法 为了大家系统有效的快速入门安卓开发,推荐

中华文明第一次被清华大学教授整理的如此清晰!

中华文明第一次被清华大学教授整理的如此清晰!  mp.weixin.qq.com 中华民族是世界上惟一文明从未中断过的民族!中国曾经被打败,但中国文明从未被摧毁! 屹立东方5000年的中华文明史,为什么绵延不断?每一个中国人都应该好好读读这篇文章! 此刻,我枯坐在静静的清华园里写下此篇文章,就是担心当今和未来的人们在历史书上往往看不到一些很关键的东西. 我们有些历史书总在讲着哪个皇帝和他的弟弟搞什么阴谋,和哪个妃子谈恋爱,永远讲这些莫名其妙的东西. 重大的事情却都没有讲. 一.文化成熟的标准是什

程序员带你学习安卓开发系列-Android文件存储

这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:.Net程序员快速学习安卓开发-布局和点击事件的写法 主要讲解了布局和点击事件的写法. 上篇文章补充: 控件单位介绍: px 像素 dip或者dp 设备独立像素 sp 比例像素 控件的高度宽度一般用dip或者dp.字体用sp. Android 存储数据项目: 描述:实现QQ登录效果.如图: 输入帐号密码,并勾选记住帐号 ,点击登录时,保存帐号信息.下次登陆可以直接显示上次保存的QQ帐号. 前台界面

程序员带你学习安卓开发,十天快速入门-开发工具配置学习

上次课程:.Net程序员学习Android开发-第一课 讲到,.Net程序员学习Android开发的必要性以及对安卓大环境的相关介绍. 其中看到有网友评论,称,搞C#的去搞安卓,还怪自己的移动平台不给力.有的人说,学习.Net就学.Net学习什么安卓.这时的我首先想到了,固步自封的大清朝.当然并不是对这部分人排斥.只能说是想法不一致,认知略有不同,也没有错与对,我只是想把我自己的想法表达出来,期望与您产生共鸣.的确迄今为止,我仍然认为C#是当今我见过的最好的语言.设计规范语法总使我赶到兴奋其优美

程序员带你学习安卓开发,十天快速入-对比C#学习java语法

关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到熟悉的效果. 上次课程:.程序员带你学习安卓开发,十天快速入门-开发工具配置学习讲的是java环境的配置以及as安装工具的安装. 其中有网友@鹅鹅鹅_说道,其实jdk的环境变量配置,不用配置的那么麻烦了.当前的jdk版本只要设置一个变量javahome就可以了,其他的可以不需要配置.在这里提一下.

Entity Framework 6.x 学习之 - 创建带连接表的实体模型 with Database First

1. 创建数据库表 CREATE TABLE [Album] ( [AlbumId] [int] NOT NULL IDENTITY(1, 1), [AlbumName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO ALTER TABLE [Album] ADD CONSTRAINT [PK_Album] PRIMARY KEY CLUSTERED ([AlbumId]) ON [PRIMARY] GO

程序员带你学习安卓开发-XML文档的创建与解析

这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:程序员带你学习安卓开发系列-Android文件存储 因知识连贯性推荐关注头条号:做全栈攻城狮.从头开始学习. 链接:http://www.toutiao.com/m5443584213/ 项目概述: 学生信息管理系统.添加学生信息,到XML文件库. 显示所有添加的学生列表. 界面: 前台界面代码: XML生成: 生成的xml: XML解析: 更多教程,欢迎大家关注今日头条-做全栈攻城狮.一起交流探

使用.net(C#)发送邮件学习手册(带成功案例)

使用.net(C#)发送邮件学习手册(带成功案例) 1.了解发送邮件的三种方式 2.实例介绍使用client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.PickupDirectoryFromIis 3.如何设定本机IIS的SMTP服务器 1.了解发送邮件的三种方式 第一:client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; //通過遠程SMTP服務器傳送

带花树学习

被大神hzm鄙视了一番,我便觉得这个带花树非学不可啦!!话不多说,下面就是我的学习随笔! 带花树算法就是用来解决一般图的匹配问题.一般图匹配自然是比二分图匹配高级的东西!所以立马屁颠屁颠地去复习了匈牙利算法.这两个算法的核心思想都是"增广"!既然这样,我们就通过对匈牙利算法增广概念的复习来引入带花树算法的增广从而理解带花树算法吧!!_(:зゝ∠)_ 匈牙利算法的增广路 咳咳,我们来复习一下二分图匹配的问题吧!已知集合S和集合T以及若干S集合中的元素到T集合中的元素的二元关系(s,t).