【自用19.1】C++构造函数

news2024/11/13 5:24:36

构造函数的作用

在创建一个新的对象时,自动调用的函数,用来进行“初始化”工作:

对这个对象内部的数据成员进行初始化。

构造函数的特点

  1. 自动调用(在创建新对象时,自动调用)
  2. 构造函数的函数名,和类名相同
  3. 构造函数没有返回类型
  4. 可以有多个构造函数(即函数重载形式)

 

构造函数的种类

默认构造函数

自定义的构造函数

拷贝构造函数

赋值构造函数

默认构造函数

没有参数的构造函数,称为默认构造函数。

合成的默认构造函数

没有手动定义默认构造函数时,编译器自动为这个类定义一个构造函数。

  1. 如果数据成员使用了“类内初始值”,就使用这个值来初始化数据成员。【C++11】
  2. 否则,就使用默认初始化(实际上,不做任何初始化)
#include <iostream>
#include <Windows.h>
#include <string>

using namespace std;

// 定义一个“人类”
class Human {
public:  //公有的,对外的
	void eat(); //方法, “成员函数”
	void sleep();
	void play();
	void work();

	string getName();
	int getAge();
	int getSalary();

private:
	string name;
	int age = 18;
	int salary;
};

void Human::eat() {
	cout << "吃炸鸡,喝啤酒!" << endl;
}

void Human::sleep() {
	cout << "我正在睡觉!" << endl;
}

void Human::play() {
	cout << "我在唱歌! " << endl;
}

void Human::work() {
	cout << "我在工作..." << endl;
}

string Human::getName() {
	return name;
}

int Human::getAge() {
	return age;
}

int Human::getSalary() {
	return salary;
}

int main(void) {
	Human  h1;  // 使用合成的默认初始化构造函数
	cout << "年龄: " << h1.getAge() << endl;     //使用了类内初始值
	cout << "薪资:" << h1.getSalary() << endl;  //没有类内初始值

	system("pause");
	return 0;
}

 结果:

注意:

只要手动定义了任何一个构造函数,编译器就不会生成“合成的默认构造函数”

一般情况下,都应该定义自己的构造函数,不要使用“合成的默认构造函数”

【仅当数据成员全部使用了“类内初始值”,才宜使用“合成的默认构造函数”】

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

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

相关文章

乐凡三防|国产化浪潮下的三防平板

在当前的科技环境下&#xff0c;国产化成为了一个热门话题&#xff0c;尤其在三防平板领域&#xff0c;国产化不仅意味着技术的自给自足&#xff0c;更是国家信息安全与产业自主可控的重要体现。三防平板&#xff0c;即具备防水、防尘、防震功能的平板电脑&#xff0c;其全国产…

02-数组

概述 数组是一个由固定长度的特定类型元素组成的序列&#xff0c;一个数组可以由零个或多个元素组成&#xff0c;一旦声明了&#xff0c;数组的长度就固定了&#xff0c;不能动态变化。 len() 和 cap() 返回结果始终一样。 声明数组 package mainimport ("fmt" )f…

【算法专场】模拟(上)

目录 ​前言 模拟算法 1576. 替换所有的问号 495. 提莫攻击 1688. 比赛中的配对次数 6. Z 字形变换 前言 我们在有时候会看到刷题网站上面看到一些已经把题意讲的很明确的题目&#xff0c;并且一般这种不怎么需要利用那些复杂的算法&#xff0c;只需要我们按照着题目的意…

宝藏!《联盟现代控制特训班题库》(麒麟篇) 习题部分:甄选内容

本文内容&#xff0c;全部选自联盟自动化考研联盟企业店( 店)的&#xff1a;初试《现代控制特性班题库》(麒麟篇)&#xff0c;分为讲义和习题两个部分&#xff0c;本文为习题部分的甄选内容&#xff0c;一本书帮你学透现控。 目录 Part1&#xff1a;资料封面&目录 习题部…

Kafka大厂面试14问(附答案)

怎么保证顺序消费&#xff1f; 同一个生产者发送到同一分区的消息&#xff0c;先发送的比后发送的offset要小。同一生产者发送到不同分区的消息&#xff0c;消息顺序无法保证。 怎么解决这个问题&#xff1f; 给一个topic只设置一个分区 相同key会发给一个分区 怎么保证幂…

python常用的列表,元组,字符串,集合,字典的应用方法

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6049c6f7ca2d4a0ca4911562dea7a8cd.png 素材内容来自——黑马程序员

【Altium Designer程序开发】生成XML多级数据库文件 V2.0

此工具用于生成多级多节点的XML数据库文件&#xff0c;主要功能用于测试XML文件的生成速度的&#xff0c;运行环境在Altium Designer中&#xff0c;可用于Altium Designer全系列的版本中。 程序界面如下图所示&#xff0c;每一级节点表示每个父Node的子Node的数量&#xff0c;节…

FRP内网穿透与神卓互联,优势对比

本文介绍分析了当前市面上两款常用的内网穿透工具 frp内网穿透介绍 一、概述 frp&#xff08;Fast Reverse Proxy&#xff09;是一款高性能的反向代理应用&#xff0c;主要用于实现内网穿透功能。通过frp&#xff0c;用户可以将内网中的服务器或服务暴露到公网上&#xff0c;…

跨境电商运营解决方案:反向代购系统物流集运一体化

跨境电商两种模式&#xff0c;一种是国外商品卖到国内&#xff0c;海淘代购。另一种是国内商品卖到国外&#xff0c;也叫反向代购。 什么是反向代购 反向代购是近年兴起的一种购物模式&#xff0c;是帮国外客户购买中国商品。主要是通过外贸代购系统&#xff0c;把淘宝、天猫…

AEC-Q100车规芯片验证

AEC-Q100是汽车电子协会(Automotive Electronics Council,简称AEC)制定的车规级芯片验证标准,它主要针对车载应用的集成电路产品所设计的一套应力测试标准,旨在通过严格的测试流程,确保芯片在复杂多变的汽车环境下具备高可靠性、高安全性和高稳定性。 验证流程 定义规格:…

哪款清理猫咪浮毛效果好?希喂、霍尼韦尔、美的宠物空气净化器PK

最近在宠物领域&#xff0c;宠物空气净化器的讨论热度很高&#xff0c;不少铲屎官们都有购买的意向。身为三猫孩子的家长&#xff0c;养宠以来市面上所有的猫毛清理工具我都用过&#xff0c;这种新兴产品肯定也不会错过。我结合自身情况和预算&#xff0c;对市面上的品牌进行筛…

UI自动化-元素动作WebElement源码类

UI自动化设计元素动作所用到的源码是WebElement源码类 其中用的最多的为前9个&#xff0c;后续是前端开发时常用 webelement源码类 元素动作都是webelement源码类中 1、往输入框里输入内容&#xff0c;元素单击后输入内容&#xff1a;key的值是要查找的值 获取标签的名称 tagn…

【Linux网络编程】协议|OSI模型|TCP/IP模型|局域网通信|跨网络通信|地址管理|流程图

目录 ​编辑 一&#xff0c;协议 协议分层 二&#xff0c;OSI七层模型 三&#xff0c;TCP/IP五层&#xff08;或四层&#xff09;模型 TCP/IP各个层次一些名词解释 为什么要有TCP/IP协议 TCP/IP协议栈与操作系统的宏观关系示意图 四&#xff0c;网络传输基本流程 局…

华为云征文|Flexus云服务X实例使用,宝塔的安装,利用宝塔安装Java、NGINX,Redis,Python,快速搭建开发环境

引出 4核12G-100G-3M规格的Flexus X实例使用测评第4弹&#xff1a;Flexus云服务X实例使用&#xff0c;宝塔的安装&#xff0c;利用宝塔安装Java、NGINX&#xff0c;redis&#xff0c;Python&#xff0c;快速搭建开发环境 什么是Flexus云服务器X实例 官方解释&#xff1a; Fl…

openharmony历程一:安装ubuntu20.04

1.下载ubuntu20.04 官网下载 下拉选择 可使用镜像&#xff1a; 镜像 2.安装 本人使用vmware,其他的如virtualbox也差不多 选择自定义和下一步 我使用的是r5 5600H&#xff0c;只有12核。 由于后面用于鸿蒙安装&#xff0c;推荐内存16GB及以上&#xff0c;硬盘100GB及…

L1-100 四项全能

作者 陈越 单位 浙江大学 新浪微博上有一个帖子给出了一道题&#xff1a;全班有 50 人&#xff0c;有 30 人会游泳&#xff0c;有 35 人会篮球&#xff0c;有 42 人会唱歌&#xff0c;有 46 人会骑车&#xff0c;至少有&#xff08; &#xff09;人四项都会。 发帖人不会做这道…

【原创教程】电气电工15:线槽导轨

电气电工这些知识点,我们描述的比较细,虽然看起来比较简单,但是它是后面我们技能提升的基础,如果我们后面学电气工程师相关知识,这些都属于基本功。 接着我们来看一下线槽导轨。 线槽又名走线槽、配线槽、行线槽(因地方而异),是用来将电源线、数据线等线材规范的整理…

【深入了解Java常用类】

前言&#xff1a;Java中的常用类主要提供了广泛的工具和功能&#xff0c;用于简化开发任务&#xff0c;处理常见的编程需求。前面我们已经介绍过String类的一些基本使用方法&#xff0c;接下来我们再介绍一些其它常用类的使用&#xff0c;本文主要介绍以包装类Integer为例、Mat…

SQL语句--DML

DML:Data Manipulation Language(数据操作语言&#xff09;&#xff0c;对表的数据记录增删改查 添加数据 INSERT修改数据UPDATA删除数据 DELETE 给指定字段添加数据&#xff1a; INSERT INTO 表名&#xff08;字段名1&#xff0c;字段名2&#xff0c;...) VALUES(值1&#xf…

设计模式-原型适配器桥接外观

3.3原型模式&#xff08;代码见vs&#xff09; 原型模式就是自我复制。原型模式的核心是一个clone()方法&#xff0c; 对于C来说&#xff0c;其实就是拷贝构造函数&#xff0c;需要实现深拷贝。拷贝构造函数根据谁来拷贝才能实现自我复制呢&#xff1f;答案就是根据自己复制自己…