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

C++类中对构造函数的重载

C++类中对构造函数的重载

C++ 允许在同一作用域中的某个函数运算符指定多个定义,分别称为函数重载运算符重载

重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。

与函数一样,构造函数也可重载,因此可创建一个将姓名作为参数的构造函数,如下所示:

class Human
{
public:Human(){// default constructor code here}Human(string humansName){// overloaded constructor code here}
};

C++ 中,我们可以在同名的类中拥有多个构造函数,只要每个构造函数具有不同的参数列表即可。这个概念称为构造函数重载,与函数重载非常相似。

重载的构造函数本质上具有相同的名称(类的确切名称),但参数的数量和类型不同。
根据传递的参数的数量和类型调用构造函数。
在创建对象时,必须传递参数以让编译器知道需要调用哪个构造函数。

以下示例程序演示了重载构造函数的用途,它在创建 Human 对象时提供了姓名:

#include <iostream>
#include <string>
using namespace std;class Human
{private:string name;int age;public:Human() // default constructor {age = 0; // initialized to ensure no junk valuecout << "Default constructor: name and age not set" << endl;}Human(string humansName, int humansAge) // overloaded constructor {name = humansName;age = humansAge;cout << "Overloaded constructor creates ";cout << name << " of " << age << " years" << endl;}
};int main()
{Human firstMan; // use default constructorHuman firstWoman ("Eve", 20); // use overloaded constructor
}

输出:

Default constructor: name and age not set
Overloaded constructor creates Eve of 20 years

分析:
第 26~30 行的 main()很简单,它创建了两个 Human 对象,其中 firstMan 是使用默认构造函数创建的,而 firstWoman 是使用指定姓名和年龄的重载构造函数创建的。所有的输出都是因创建对象而生成的!如果 Human 类没有默认构造函数,则在 main()中创建每个 Human 对象时都只能使用将姓名和年龄作为参数的构造函数;在这种情况下,不提供姓名和年龄就无法创建 Human 对象。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程

相关文章:

C++类中对构造函数的重载

C类中对构造函数的重载 C 允许在同一作用域中的某个函数和运算符指定多个定义&#xff0c;分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明&#xff0c;但是它们的参数列表和定义&#xff08;实现&#xff09;不…...

QtC++与QLabel详解

介绍 QLabel 类是Qt中的一个用于显示文本或图像的控件类&#xff0c;通常用于用户界面中以提供静态文本或图片显示的功能。以下是对QLabel在Qt中的作用的详细解释&#xff1a; 文本和图像显示&#xff1a; QLabel 可以用来显示文本和图像。这使得它成为显示标签、标题、说明或…...

090基于web+springboot的中小企业设备管理系统

欢迎大家关注&#xff0c;一起好好学习&#xff0c;天天向上 文章目录 一项目简介技术介绍 二、功能组成三、效果图四、 文章目录 一项目简介 本中小企业设备管理系统管理员有个人中心&#xff0c;用户管理&#xff0c;员工管理&#xff0c;设备信息管理&#xff0c;配件信息管…...

input 调起键盘 ,键盘距离输入框底部太近

input 调起键盘 &#xff0c;键盘距离输入框底部太近 解决方法 cursorSpacing‘20’ 单位是 ‘px’ <input cursorSpacing20 type"text" v-model"replyMain" />距离底部距离 20px &#xff0c;输入框距离键盘距离是20px...

前端深拷贝与浅拷贝的实现

1、浅拷贝和深拷贝的定义 1.1、浅拷贝 有两种方式&#xff0c;一种是把一个对象里面的所有的属性值和方法都复制给另一个对象&#xff0c;另一种是直接把一个对象赋给另一个对象&#xff0c;使得两个都指向同一个对象。浅拷贝对内存地址的复制&#xff0c;让目标对象指针和源…...

哆啦百宝箱APP

专门为年轻人设计的APP&#xff0c;主打的免费、无恶心广告、不获取任何个人信息。 哆啦百宝箱 ● 永久免费 ● 无恶心广告 ● 种类巨多 ● 全民参与 ● 爆款功能 ● 用心创造 哆啦百宝箱 提供了从日常、图片、查询、设备、趣味、娱乐等多方面的功能&#xff0c; 操作简单&a…...

lv9 嵌入式开发 数据库sqlite

1 数据库基本概念 数据&#xff08;Data&#xff09; 能够输入计算机并能被计算机程序识别和处理的信息集合 数据库 &#xff08;Database&#xff09; 数据库是在数据库管理系统管理和控制之下&#xff0c;存放在存储介质上的数据集合 2 常用的数据库 大型数据库…...

「Verilog学习笔记」异步复位的串联T触发器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 这道题目里我们有两个需要明确的点&#xff1a; 1. 什么是异步复位 2. 什么是串联的T触发器 关于第一个点&#xff0c;可以看我的这篇文章&#xff0c;已经整理好了&a…...

什么是51单片机,,如何写代码,并且烧录?

文章目录 1.单片机介绍2.Keil 5操作1.打开Keil 5 3 新建工程3.添加文件并写代码4.添加到group5,设置6.check7.编译8.打开头文件9 调整编辑器 4.烧录1.烧录程序2.串口查询 5.Debug1.首先编译2.调试3.查询 6 51单片机汇编指令1.格式2.符号3.寻址4.数据传送与交换指令5.交换指令6 …...

Multer 实现文件上传功能

Multer 实现文件上传功能 前言:Multer 安装和使用1、安装2、使用2-1 前端代码2-2 后端代码3、实现效果前言: post请求一般有4种数据类型: application/x-www-form-urlencodedmultipart/form-dataapplication/jsontext/xml相应后端Express会使用不同的中间件来解析不同类型的…...

Excel·VBA工作表导出为图片

《Excel转图片别再截图啦&#xff01;用这4个方法&#xff0c;高清且无损&#xff01;》&#xff0c;excel转为图片一般方法较为简单&#xff0c;那么能否使用vba将excel转为图片 选中区域导出为图片 zoom设置为2&#xff0c;导出图片较为清晰 Sub 选中区域导出为图片()Dim …...

【零基础抓包】Fiddler超详细教学(一)

​Fiddler 1、什么是 Fiddler? Fiddler 是一个 HTTP 协议调试代理工具&#xff0c;它能够记录并检查所有你的电脑和互联网之间的 HTTP 通讯。Fiddler 提供了电脑端、移动端的抓包、包括 http 协议和 https 协议都可以捕获到报文并进行分析&#xff1b;可以设置断点调试、截取…...

快速入手maven

文章目录 Maven介绍Maven安装和配置基于IDEA的Maven工程创建梳理Maven工程GAVP属性Idea构建Maven JavaSE工程Idea构建Maven JavaEE工程1. 手动创建2. 插件方式创建 Maven工程项目结构说明Maven核心功能依赖和构建管理依赖传递和冲突依赖导入失败场景和解决方案扩展构建管理和插…...

Mysql Binlog日志

Mysql Binlog是二进制格式的日志文件&#xff0c;但是不能把binlog文件等同于OS系统某目录下的具体文件&#xff0c;这是狭隘的。Binlog是用来记录Mysql内部对数据库的改动&#xff08;只记录对数据的修改操作&#xff09;&#xff0c;主要用于数据库的主从复制、数据同步以及增…...

高级深入--day45

官方站点&#xff1a;GitHub - rmax/scrapy-redis: Redis-based components for Scrapy. scrapy-redis的官方文档写的比较简洁&#xff0c;没有提及其运行原理&#xff0c;所以如果想全面的理解分布式爬虫的运行原理&#xff0c;还是得看scrapy-redis的源代码才行。 scrapy-r…...

shell_66.Linux修改或移除信号捕获

修改或移除信号捕获 要想在脚本中的不同位置进行不同的信号捕获处理&#xff0c;只需重新使用带有新选项的 trap 命令即可&#xff1a; $ cat trapmod.sh #!/bin/bash #Modifying a set trap # trap "echo Sorry...Ctrl-C is trapped." SIGINT # count1 whi…...

5 ip的分配

如上一节所述&#xff0c;需要和其他设备通信&#xff0c;那么需要先配置ip. 1、如何配置ip 1.可以使用 ifconfig&#xff0c;也可以使用 ip addr 2.设置好了以后&#xff0c;用这两个命令&#xff0c;将网卡 up 一下&#xff0c;就可以了 //---------------------------- 使…...

【Python机器学习】零基础掌握StackingClassifier集成学习

如何精确地预测花的种类?一个简单但强大的方法引入了! 在现实生活中,生物学家和园艺爱好者经常面临一个问题:如何准确地识别和分类不同种类的花?这不仅仅是一个纯粹的学术问题,也有实际应用,比如在植物育种、生态研究等方面。为 了解决这个问题,一种叫做堆叠分类(St…...

Spring Boot 常见面试题

目录 1.Spring Boot 快速入门什么是 Spring Boot&#xff1f;有什么优点&#xff1f;Spring Boot 与 Spring MVC 有什么区别&#xff1f;Spring 与 Spring Boot 有什么关系&#xff1f;✨什么是 Spring Boot Starters?Spring Boot 支持哪些内嵌 Servlet 容器&#xff1f;如何设…...

利用大语言模型(LLM )提高工作效率

日常工作就是面向 google/ 百度编程&#xff0c;除了给变量命名是手动输入&#xff0c;大多时候就是通过搜索引擎拷贝别人的代码&#xff0c;或者找到旧项目一段代码拷贝过来使用。这无疑是开发人员的真实写照&#xff1b;然而&#xff0c;通过搜索引擎搜索答案&#xff0c;无疑…...

深度解析WaveTools:鸣潮游戏性能优化与数据分析的专业工具

深度解析WaveTools&#xff1a;鸣潮游戏性能优化与数据分析的专业工具 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools WaveTools作为一款专为《鸣潮》游戏设计的开源工具箱&#xff0c;通过帧率解锁、画质…...

Windows电脑安装安卓APK的终极指南:3分钟学会跨平台应用安装

Windows电脑安装安卓APK的终极指南&#xff1a;3分钟学会跨平台应用安装 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为手机应用无法在电脑上使用而烦恼吗&…...

UE5 GAS框架下,如何用C++代码优雅地创建你的第一个RPG角色蓝图?

UE5 GAS框架下C与蓝图的协同开发&#xff1a;构建可扩展的RPG角色系统 在虚幻引擎5的游戏开发中&#xff0c;Gameplay Ability System&#xff08;GAS&#xff09;为构建复杂的角色能力体系提供了强大支持。本文将带你深入探索如何通过C代码设计可扩展的角色基类&#xff0c;并…...

java新手福音:免下载jdk1.8,在快马平台写出你的第一个程序

作为一个刚接触Java的新手&#xff0c;最头疼的就是环境配置了。记得我第一次学Java时&#xff0c;光是下载JDK、配置环境变量就折腾了大半天&#xff0c;还没开始写代码就已经被劝退了一半。直到发现了InsCode(快马)平台&#xff0c;才发现原来入门Java可以这么简单。 零配置开…...

jsTree完整生态系统指南:插件、主题和工具全解析

jsTree完整生态系统指南&#xff1a;插件、主题和工具全解析 【免费下载链接】jstree jquery tree plugin 项目地址: https://gitcode.com/gh_mirrors/js/jstree jsTree是一个功能强大的jQuery树形插件&#xff0c;专为现代Web应用设计&#xff0c;提供了完整的树形结构…...

[Python3高阶编程] - Gunicorn 介绍与使用指南

Gunicorn 是什么Gunicorn&#xff08;Green Unicorn&#xff09;是一个 Python WSGI HTTP 服务器&#xff0c;用于运行 Python Web 应用。它是生产环境中最流行的 Python 应用服务器之一&#xff0c;特点是简单、轻量、高性能。客户端 → Gunicorn&#xff08;处理 HTTP、管理 …...

16.2【保姆级教程】 C语言八进制+十六进制保姆级详解 _ 底层开发必吃透

&#x1f525;C语言八进制十六进制保姆级详解 | 底层开发必吃透&#x1f4e2; 关注博主不迷路&#xff01;全网最细C语言八进制、十六进制教程&#xff0c;从定义到实操、从转换到应用&#xff0c;新手零门槛上手&#xff0c;底层开发/面试必看&#xff01;在C语言底层开发中&a…...

避坑指南:RK3588以太网调试那些‘看起来通了但实际没通’的坑(附千兆网线识别与ifconfig -a用法)

RK3588以太网深度排雷手册&#xff1a;从"假连通"到真稳定的实战指南 当你看到eth0接口亮起绿色指示灯&#xff0c;ifconfig显示RX/TX数据包在跳动&#xff0c;甚至ping命令能收到零星回复时&#xff0c;是否觉得RK3588的网络已经调试成功&#xff1f;且慢——这可能…...

实测560Mbps!基于ZYNQ的SFP光口以太网性能优化全记录(含PetaLinux配置)

实测560Mbps&#xff01;基于ZYNQ的SFP光口以太网性能优化全记录&#xff08;含PetaLinux配置&#xff09; 在嵌入式系统设计中&#xff0c;高速以太网通信一直是提升整体性能的关键环节。特别是当项目需要远距离、抗干扰的数据传输时&#xff0c;SFP光口方案往往成为工程师的首…...

OpenClaw本地知识库:Qwen3.5-9B-AWQ-4bit自动索引图片资料

OpenClaw本地知识库&#xff1a;Qwen3.5-9B-AWQ-4bit自动索引图片资料 1. 为什么需要自动化图片管理 作为一个长期囤积各类截图、设计稿和参考图的用户&#xff0c;我的"图片黑洞"问题越来越严重——3TB的硬盘里散落着上万张未分类的图片。传统方案要么依赖手动打标…...