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

【C++ | 委托构造函数】委托构造函数 详解 及 例子源码

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍 C++11 的 委托构造函数 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰发布时间⏰:

本文未经允许,不得转发!!!

目录

  • 🎄一、概述
  • 🎄二、委托构造函数(delegating constructor)
    • ✨2.1 为什么需要委托构造函数?
    • ✨2.2 什么是委托构造函数?
  • 🎄三、声明、定义委托构造函数
  • 🎄四、委托构造函数的使用
  • 🎄五、总结



在这里插入图片描述

🎄一、概述

委托构造函数是C++11标准才支持的功能,也属于构造函数的一种。
委托构造函数在其成员初始化列表调用了本类其他构造函数来完成其部分或全部初始化工作。

本文主要介绍下面几点:
1、为什么需要委托构造函数?什么是委托构造函数?
2、怎样声明、定义委托构造函数?
3、怎样使用委托构造函数?


在这里插入图片描述

🎄二、委托构造函数(delegating constructor)

✨2.1 为什么需要委托构造函数?

使用 委托构造函数 的目的是:避免写重复的代码。

委托构造函数是C++11新增的特性。在没有委托构造函数之前,有时不得不在构造函数中写重复的代码:

// 构造函数定义
CDate::CDate(int year, int mon, int day):Max_Year(2039)
{m_year = year>Max_Year ? Max_Year : year;m_mon = mon;m_day = day;cout << "Calling Constructor" << ", this=" << this <<endl;
}// 构造函数定义
CDate::CDate(int year, int mon):Max_Year(2039)
{m_year = year>Max_Year ? Max_Year : year;m_mon = mon;m_day = 1;cout << "Calling Constructor" << ", this=" << this <<endl;
}// 构造函数定义
CDate::CDate(int year):Max_Year(2039)
{m_year = year>Max_Year ? Max_Year : year;m_mon = 1;m_day = 1;cout << "Calling Constructor" << ", this=" << this <<endl;
}// 构造函数定义
CDate::CDate():Max_Year(2039)
{m_year = 2000;m_mon = 1;m_day = 1;cout << "Calling Constructor" << ", this=" << this <<endl;
}

而使用委托构造函数可以解决这种在多个构造函数中写重复代码的问题。


✨2.2 什么是委托构造函数?

委托构造函数也是构造函数的一种,它在其成员初始化列表中使用了其他构造函数来完成部分或全部初始化工作。

委托构造函数的特点:
1、没有返回值,函数名为类名;
2、成员初始化列表只允许调用一个本类的其他构造函数(可以是委托构造函数),不允许初始化其他成员;
3、函数体可能没有任何实现,只有一个{},也可以实现一部分初始化工作。

如果定义了委托构造函数,则gcc编译时必须指定-std=c++11以支持C++11标准


在这里插入图片描述

🎄三、声明、定义委托构造函数

这个小节以CDate类为例,介绍怎样声明、定义委托构造函数,我们还是以前面那4个构造函数为例.

  • 1、先写好函数名CDate
  • 2、在成员初始化列表里调用本类的一个构造函数,这个调用的构造函数可以也是委托构造函数。下面例子中都是调用CDate(int year, int mon, int day);
  • 3、实现函数体,本类中全部都不实现,只写了{}
CDate(int year, int mon, int day);	// 构造函数声明CDate(int year, int mon):CDate(year,mon,1)	// 委托构造函数
{}CDate(int year):CDate(year,1,1)				// 委托构造函数
{}CDate():CDate(2000,1,1)						// 委托构造函数
{}
//CDate(){CDate(2000,1,1);}			// 报错,没初始化Max_Year

在这里插入图片描述

🎄四、委托构造函数的使用

这个小节主要介绍使用委托构造函数的注意点,以及给出完整的使用例子。

// g++ 21_Delegating_Constructor.cpp -std=c++11
#include <iostream>
using namespace std;class CDate
{
public:CDate(int year, int mon, int day);	// 构造函数声明CDate(int year, int mon):CDate(year,mon,1){}// 委托构造函数CDate(int year):CDate(){}			// 委托构造函数CDate():CDate(2000,1,1){}					// 委托构造函数//CDate(){CDate(2000,1,1);}			// 报错,没初始化Max_Yearvoid show(){cout << "Date: " << m_year << "." << m_mon << "." << m_day << ", this=" << this << endl;}
private:int m_year;int m_mon;int m_day;const int Max_Year;
};// 构造函数定义
CDate::CDate(int year, int mon, int day):Max_Year(2039)
{m_year = year>Max_Year ? Max_Year : year;m_mon = mon;m_day = day;cout << "Calling Constructor(int,int,int)" << ", this=" << this <<endl;
}int main()
{CDate date(2024,06,27);date.show();cout << endl;return 0;
}

在这里插入图片描述

🎄五、总结

👉本文介绍C++11的委托构造函数是什么,怎么声明、定义?怎样使用?

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

相关文章:

【C++ | 委托构造函数】委托构造函数 详解 及 例子源码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

iCloud邮件全攻略:设置与使用终极指南

标题&#xff1a;iCloud邮件全攻略&#xff1a;设置与使用终极指南 摘要 iCloud邮件是Apple提供的一项邮件服务&#xff0c;允许用户在所有Apple设备上访问自己的邮件。本文将详细介绍如何在各种设备和邮件客户端上设置和使用iCloud邮件账户&#xff0c;确保用户能够充分利用…...

【计算机毕业设计】基于微信小程序的电子购物系统的设计与实现【源码+lw+部署文档】

包含论文源码的压缩包较大&#xff0c;请私信或者加我的绿色小软件获取 免责声明&#xff1a;资料部分来源于合法的互联网渠道收集和整理&#xff0c;部分自己学习积累成果&#xff0c;供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…...

CSS实现动画

CSS实现动画主要有三种方式&#xff1a;transition&#xff0c;transform&#xff0c;和animation1。以下是一些详细的逻辑&#xff0c;实例和注意事项&#xff1a; Transition&#xff1a;transition可以为一个元素在不同状态之间切换的时候定义不同的过渡效果。例如&#xff…...

Python+Pytest+Allure+Yaml+Jenkins+GitLab接口自动化测试框架详解

PythonPytestAllureYaml接口自动化测试框架详解 编撰人&#xff1a;CesareCheung 更新时间&#xff1a;2024.06.20 一、技术栈 PythonPytestAllureYamlJenkinsGitLab 版本要求&#xff1a;Python3.7.0,Pytest7.4.4,Allure2.18.1,PyYaml6.0 二、环境配置 安装python3.7&…...

[OtterCTF 2018]Bit 4 Bit

我们已经发现这个恶意软件是一个勒索软件。查找攻击者的比特币地址。** 勒索软件总喜欢把勒索标志丢在显眼的地方&#xff0c;所以搜索桌面的记录 volatility.exe -f .\OtterCTF.vmem --profileWin7SP1x64 filescan | Select-String “Desktop” 0x000000007d660500 2 0 -W-r-…...

计算机视觉全系列实战教程 (十四):图像金字塔(高斯金字塔、拉普拉斯金字塔)

1.图像金字塔 (1)下采样 从G0 -> G1、G2、G3 step01&#xff1a;对图像Gi进行高斯核卷积操作&#xff08;高斯滤波&#xff09;step02&#xff1a;删除所有的偶数行和列 void cv::pyrDown(cv::Mat &imSrc, //输入图像cv::Mat &imDst, //下采样后的输出图像cv::Si…...

正确重写equals和hashcode方法

1. 重写的原因 如有个User对象如下&#xff1a; public class User {private String name;private Integer age; }如果不重写equals方法和hashcode方法&#xff0c;则&#xff1a; public static void main(String[] args) {User user1 new User("userA", 30);Us…...

数据质量管理-时效性管理

前情提要 根据GB/T 36344-2018《信息技术 数据质量评价指标》的标准文档&#xff0c;当前数据质量评价指标框架中包含6评价指标&#xff0c;在实际的数据治理过程中&#xff0c;存在一个关联性指标。7个指标中存在4个定性指标&#xff0c;3个定量指标&#xff1b; 定性指标&am…...

python 实例002 - 数据转换

题目&#xff1a; 有一组用例数据如下&#xff1a; cases [[case_id, case_title, url, data, excepted],[1, 用例1, www.baudi.com, 001, ok],[4, 用例4, www.baudi.com, 002, ok],[2, 用例2, www.baudi.com, 002, ok],[3, 用例3, www.baudi.com, 002, ok],[5, 用例5, www.ba…...

1.k8s:架构,组件,基础概念

目录 一、k8s了解 1.什么是k8s 2.为什么要k8s &#xff08;1&#xff09;部署方式演变 &#xff08;2&#xff09;k8s作用 &#xff08;3&#xff09;Mesos&#xff0c;Swarm&#xff0c;K8S三大平台对比 二、k8s架构、组件 1.k8s架构 2.k8s基础组件 3.k8s附加组件 …...

动态规划基础练习

我们需要先从数组较大的开始进行处理&#xff0c;每次考察上下左右的&#xff0c;比较当前存储的最大值和转移来的值&#xff0c;哪一个大一点 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> using namespace std;int n, m; int a[105][105]; int addx[] { 0,…...

基于Java的地方废物回收机构管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;MIS的总体思想&#xff0c;MySQL数据库 工具&#xff1a;Eclipse&#xff0c;…...

Leetcode 450:删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可分为两个步骤&#xff1a; 首先…...

Go 中使用map时注意的问题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...

english-works

前奏&#xff08;prelude&#xff09;&#xff1a; To build up our body, our school sports meeting was held on our play ground last Thursday. All the students in my class took an active part in sports meeting. It began with an opening ceremony on the play g…...

Kubernetes面试整理-如何利用PodSecurityPolicies来提高集群的安全性?

PodSecurityPolicy (PSP) 是 Kubernetes 中用于定义和控制 Pod 安全配置的策略。通过 PSP,可以设置对 Pod 的一些安全约束条件,从而提高集群的安全性。虽然 PSP 从 Kubernetes 1.21 开始已被弃用,并在 1.25 版本中移除,但在一些旧版 Kubernetes 集群中,PSP 仍然是一个重要…...

YOLO网络结构特点收录

YOLO网络结构特点收录 YOLO&#xff08;You Only Look Once&#xff09;网络结构随着版本迭代不断进化&#xff0c;以下是一些关键版本的网络结构特点概述&#xff1a; YOLOv1 输入&#xff1a;将图像调整至固定尺寸&#xff0c;如448x448像素。骨干网络&#xff1a;初期版本…...

人生最有力,最棒的十句话!

人生最有力&#xff0c;最棒的十句话 1、允许一切事发生&#xff0c;所有一切发生的事不是你能阻挡了的&#xff0c;你接受&#xff0c;他也发生&#xff0c;你不接受&#xff0c;他也发生&#xff0c;你还不如坦然面对接受现实。 2、你焦虑的时候千万不要躺着啥也不干&#xf…...

ASUS华硕A豆14笔记本电脑I421EAYB,I421EQYB_ADOL14EA工厂模式原厂Win11系统安装包下载

适用型号&#xff1a;ADOL14EA笔记本I421EAYB、I421EQYB 链接&#xff1a;https://pan.baidu.com/s/1krU8m_lbApyUfZQo5E4cCQ?pwd0ewl 提取码&#xff1a;0ewl 华硕原装WIN11系统工厂安装包&#xff0c;带有MyASUS WinRE RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系…...

丙酮传感器TGS1820在呼吸气体丙酮含量分析检测中的应用

随着科技的进步&#xff0c;无创检测技术逐渐成为医疗保健领域的新宠。其中&#xff0c;基于呼吸气体的分析检测技术以其独特的优势受到了广泛关注。呼吸气中的挥发性有机化合物&#xff08;VOCs&#xff09;不仅为研究者们提供了关于人体健康状态的宝贵信息&#xff0c;而且它…...

全国今日油价查询-全国今日油价查询接口-API接口

关于油价的信息&#xff0c;以下是详细的分点表示和归纳&#xff1a; 最新油价调整&#xff1a; 时间&#xff1a;2024年6月28日0时 调整内容&#xff1a;汽油价格上调210元/吨&#xff0c;柴油价格上调200元/吨。 涨幅&#xff1a;加油站油价上涨0.16元/升-0.20元/升。 具体油…...

MT1568 学生成绩

题目 有3个学生&#xff0c;每个学生有3门课的成绩&#xff0c;从键盘输入数据&#xff0c;包括学号、姓名、三门课成绩&#xff0c;学号整型&#xff0c;姓名字符型&#xff0c;成绩实型&#xff0c;计算3门课程总平均成绩&#xff0c;以及平均分最高的学生信息。不考虑非法成…...

医院消防设施设备管理系统

医院为人员密集场所&#xff0c;且多为各类病患及其陪护人员&#xff0c;一旦发生火灾&#xff0c;人员疏散逃生困难&#xff0c;容易造成较严重的生命与财产损失。为规范医院的消防设施设备管理&#xff0c;通过凡尔码系统对医院消防设施设备进行信息化管理&#xff0c;提高医…...

[Go 微服务] go-micro + consul 的使用

文章目录 1.go-micro 介绍2.go-micro 的主要功能3.go-micro 安装4.go-micro 的使用4.1 创建服务端4.2 配置服务端 consul4.3 生成客户端 5.goodsinfo 服务5.1 服务端开发5.2 客户端开发 1.go-micro 介绍 Go Micro是一个简化分布式开发 的微服务生态系统&#xff0c;该系统为开…...

嵌入式网页服务实现

嵌入式网页服务的实现方式主要可以归纳为以下几种&#xff1a; 单片机Webchip网关&#xff1a; Webchip&#xff1a;作为专用网络接口芯片&#xff0c;独立于单片机与网关&#xff0c;通过SPI接口与MCU进行指令交互&#xff0c;并通过RS232、USB、Modem等接口与PC作为网关进行通…...

python---OpenCv(二),背景分离方法较有意思

目录 边界矩形 旋转矩形(最小外接矩形): 计算轮廓 找4个点的坐标 把浮点型转为Int 画轮廓 边界矩形--&#xff08;最大外接矩形&#xff09; 转灰度 找轮廓 找顶点 画矩形 显示 背景分离方法&#xff08;这个很好玩&#xff0c;可以识别在动的物体&#xff09; 边…...

java TCP服务器与客户端通信示例

目录 背景: TCP服务代码解析: TCP服务器的代码: 服务器程序的工作流程: TCP客户端代码解析 : TCP客户端代码: 客户端工作流程: 总结: 背景: 如何使用Java编程语言实现一个简单的TCP服务器和客户端。那么TCP是什么?TCP&#xff08;Transmission Control Protocol&…...

【C++】构造函数和析构函数

目录 对象初始化-构造函数构造函数的分类构造函数的调用拷贝构造的应用构造函数调用规则深拷贝和浅拷贝初始化列表类对象作为类成员静态成员 对象释放-析构函数 对象初始化-构造函数 构造函数是类实例化的时候会自动调用的初始化函数&#xff0c;如果用户不写编译器会提供一个…...

Docker Compose:多容器应用的管理利器

在现代应用开发中&#xff0c;微服务架构已成为主流。管理和编排多个容器应用变得至关重要。Docker Compose 是一个强大的工具&#xff0c;通过一个简单的 YAML 文件定义和运行多容器应用。本文将详细介绍 Docker Compose 的基本概念、安装、用法以及一个实际的示例&#xff0c…...

给公司做个网站多少钱/深圳关键词优化软件

当我使用Java生成的有效负载及其签名发出post请求时&#xff0c;服务器接受该请求。在当我使用相同的有效负载并使用相同的算法生成签名但现在使用python时&#xff0c;我总是得到Bad Padding异常。在我比较了两个程序生成的sha&#xff0c;它们看起来是一样的&#xff0c;所以…...

银川网站建设实习生/百度竞价推广运营

原标题&#xff1a;显示字体小到有些模糊&#xff1f;高分屏别忘了这些设置“BOSS&#xff0c;你这字体也太小了吧”“我才搞定新显卡&#xff0c;用上了2K屏”……好吧&#xff0c;小狮子不知趣地又拿BOSS开涮了&#xff0c;相比喜欢精细显示的BOSS&#xff0c;小狮子显然更喜…...

廊坊电商网站建设/成都今天宣布的最新疫情消息

做java小项目所遇到的一些问题 eclipse导入其他项目时不显示 很有可能是你将项目名字修改或者移动了项目路径 解决&#xff1a;将原版项目导入&#xff0c;改名的话再在eclipse里重构,再在重命名文件夹 在重新导入。 eclipse导入其他项目报错 统一解决方法&#xff1a; 右键…...

公司形象墙装修效果图/seo优化方法有哪些

智能红外额温枪可以实现非接触近距离测量人体的体温&#xff0c;在特殊情况下&#xff0c;为了避免直接接触人体&#xff0c;防止交叉感染&#xff0c;在很多地方都需要用到智能红外额温枪。6108方案提供的智能红外额温枪方案快速准确&#xff0c;测量范围更广。目录一、智能红…...

网站建设的维护工作/百度在线使用网页版

convert(varchar(10),字段名,转换格式) CONVERT(nvarchar(10),count_time,121)CONVERT为日期转换函数&#xff0c;一般就是在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到的函数的3个参数&#xff0c;第1个参数为&#xff…...

wordpress 欲思/成品网站建站空间

(1)涉及到的算法 1.监督学习&#xff1a;线性回归&#xff0c;逻辑回归&#xff0c;神经网络&#xff0c;SVM。 线性回归&#xff08;下面第三行x0(i)其实是1&#xff0c;可以去掉&#xff09; 逻辑回归 神经网络&#xff08;写出前向传播即可&#xff0c;反向框架会自动计算&a…...