C++基础知识:构造函数的分类和调用,有参构造和无参构造,有参构造和无参构造,三种调用方式:括号法,显示法,隐式转换法,以及相关代码演示和注意事项

news2024/12/23 13:21:37

1.构造函数的分类及调用:

2.两种分类方式:


按参数分为: 有参构造和无参构造
按类型分为:有参构造和无参构造


3.三种调用方式:


括号法
显示法
隐式转换法

2.调用方法代码演示

1.括号法代码演示:
#include<iostream>

using namespace std;

//1.构造函数的分类和调用

//分类
//按照参数分类-----无参构造(也称之为默认构造)和有参构造
//按照类型分类-----普通构造和拷贝构造

class Person {
public:
	/*无参构造*/
	Person() {
		cout << "Person的无参构造函数调用" << endl;

	}

	/*有参构造*/

	Person(int a) {
		age = a;
		cout << "Person的有参构造函数调用" << endl;

	}
	//拷贝构造函数(简单来说就是克隆)

	Person(const Person& p) {//要加const进行限制,并且要引用
		age = p.age;
		//将传入的人身上的所有属性,拷贝到我身上(也就是调用这个构造函数的对象身上)
		cout << "Person的有参拷贝构造函数调用" << endl;

	}

	int age;


	~Person()
	{
		cout << "Person的析构函数调用" << endl;
	}
};

//调用
void test01() {
	//1.括号法

	Person p1;//默认构造函数的调用
	Person p2(10);//有参构造函数
	Person p3(p2);//拷贝构造函数
	//拷贝构造函数的用途

	cout << "p2的年龄为:" << p2.age << endl;

	//因为是拷贝所以p3的年龄也为10
	cout << "p3的年龄为:" << p3.age << endl;

	//注意调用默认构造函数的时候不要加()
	//Person p1();//编译器会认为这是一个函数声明,不会认为在创建对象

}



int main() {

	test01();
	system("pause");


	return 0;
}
1.1括号法代码效果:

2.显示法:
#include<iostream>

using namespace std;

//1.构造函数的分类和调用

//分类
//按照参数分类-----无参构造(也称之为默认构造)和有参构造
//按照类型分类-----普通构造和拷贝构造

class Person {
public:
	/*无参构造*/
	Person() {
		cout << "Person的无参构造函数调用" << endl;

	}

	/*有参构造*/

	Person(int a) {
		age = a;
		cout << "Person的有参构造函数调用" << endl;

	}
	//拷贝构造函数(简单来说就是克隆)

	Person(const Person& p) {//要加const进行限制,并且要引用
		age = p.age;
		//将传入的人身上的所有属性,拷贝到我身上(也就是调用这个构造函数的对象身上)
		cout << "Person的有参拷贝构造函数调用" << endl;

	}

	int age;


	~Person()
	{
		cout << "Person的析构函数调用" << endl;
	}
};

//调用
void test01() {



	//2.显示法

	Person p1;//默认构造是一样的

	Person p2 = Person(10);//有参构造

	Person p3 = Person(p2);//有参构造

	//注意事项1:
	Person(10);//匿名对象,特点:当前行执行结束后,系统会立即回收掉匿名对象

	//2.注意事项2;
	//不要利用拷贝构造函数 初始化匿名函数
	//下面这个编译器会认为是Person (p3)===Person p3;//对象申明

	//Person(p3);//会报错

	cout << "打印线———————" << endl;
}



int main() {

	test01();
	system("pause");


	return 0;
}
2.1显示法代码执行结果:

3.隐式转换法:
#include<iostream>

using namespace std;

//1.构造函数的分类和调用

//分类
//按照参数分类-----无参构造(也称之为默认构造)和有参构造
//按照类型分类-----普通构造和拷贝构造

class Person {
public:
	/*无参构造*/
	Person() {
		cout << "Person的无参构造函数调用" << endl;

	}

	/*有参构造*/

	Person(int a) {
		age = a;
		cout << "Person的有参构造函数调用" << endl;

	}
	//拷贝构造函数(简单来说就是克隆)

	Person(const Person& p) {//要加const进行限制,并且要引用
		age = p.age;
		//将传入的人身上的所有属性,拷贝到我身上(也就是调用这个构造函数的对象身上)
		cout << "Person的有参拷贝构造函数调用" << endl;

	}

	int age;


	~Person()
	{
		cout << "Person的析构函数调用" << endl;
	}
};

//调用
void test01() {
	//3.隐式转换法

	Person p4 = 10;//相当于Person p4 =Person(10) 有参构造

	Person p5 = p4;//拷贝构造

}



int main() {

	test01();
	system("pause");


	return 0;
}
3.1隐式转换法代码执行结果:

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

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

相关文章

tensorflow2(快速入门)

版本问题 导包 import tensorflow as tf 加载数据 加载并准备 MNIST 数据集。将样本数据从整数转换为浮点数&#xff1a; mnist tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) mnist.load_data() x_train, x_test x_train / 255.0, x_test / 255.0 搭…

【Cloud Native】数据库新纪元:驾驭关系型与NoSQL的力量

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、云原生概述 2、数据库在云原生时代的重要性 二、云…

详细分析Flask中的蓝图Blueprint(附Demo)

目录 前言1. 基本知识2. Demo 前言 对于Java的基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; 1. 基本知识 蓝图&#xff08;Bluepri…

yolo数据集从一种文件夹格式转话成另外一种

1、转化前yolo格式数据集路径结构 2、转化后yolo格式数据集路径结构 3、转化脚本&#xff08;可以直接复制使用&#xff09; import os import argparse import shutil def makdirs(opt,tests_flag):images_train os.path.join(opt.save_root_path, images/train)images_val …

编程入门:大学新生的指南与策略

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

SSH访问控制:精确管理你的服务器门户

“ 在数字世界中&#xff0c;服务器的安全性是任何网络管理员的首要任务。特别是对于远程登录协议如SSH&#xff0c;确保只有授权用户可以访问是至关重要的。 今天&#xff0c;记录两种有效的方法来控制用户对特定服务器的访问&#xff1a;通过sshd_config实现黑/白名单机制和利…

论文解析——Character Region Awareness for Text Detection,字符级文本检测CRAFT算法

这篇论文来自CVPR2019&#xff0c;paper地址&#xff1a;Character Region Awareness for Text Detection。 代码&#xff1a;CRAFT-pytorch。 这篇论文主要解决之前的文本检测是基于word-level的检测框&#xff0c;不能识别任意形状的文本的问题。与之前的方法不同&#xff0…

HID类报表描述符深入理解(需要完善)

参考资料 一篇博文&#xff0c; USB中文网, USB中文网1, HID有关资源&#xff0c; HID报告描述符的基本组成&#xff08;短&#xff09;item 长的item几乎没使用过&#xff0c;和短的item使用方法类似&#xff0c;可根据HID协议查看&#xff0c;使用方式可以参考item介绍 三…

自修室预约小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;公告通知管理&#xff0c;自修室管理&#xff0c;座位预约管理&#xff0c;预约取消管理&#xff0c;管理员管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&a…

代码随想录训练营 Day17打卡 二叉树 part05 654. 最大二叉树 617. 合并二叉树 700. 二叉搜索树中的搜索 98. 验证二叉搜索树

代码随想录训练营 Day17打卡 二叉树 part05 一、 力扣654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归…

基于Raft算法的分布式KV数据库:一、开篇

项目描述&#xff1a;本项目是基于Raft算法的分布式KV数据库&#xff0c;保证了分布式系统的数据一致性和分区容错性&#xff0c;在少于半数节点发生故障时仍可对外提供服务。使用个人实现的分布式通信框架mpRPC和跳表数据库skipList提供RPC服务和KV存储服务。 github地址&…

如何在数据埋点中发现和修复数据上报逻辑错误

如何发现和处理数据埋点中的逻辑错误 在大数据分析中,数据埋点是至关重要的一环。然而,当我们遇到数据上报逻辑错误时,该如何应对呢?本文将为你揭示解决这一棘手问题的有效方法。 目录 如何发现和处理数据埋点中的逻辑错误什么是数据上报逻辑错误?如何发现数据上报逻辑错误…

Python酷库之旅-第三方库Pandas(060)

目录 一、用法精讲 231、pandas.Series.reorder_levels方法 231-1、语法 231-2、参数 231-3、功能 231-4、返回值 231-5、说明 231-6、用法 231-6-1、数据准备 231-6-2、代码示例 231-6-3、结果输出 232、pandas.Series.sort_values方法 232-1、语法 232-2、参数…

Flink-StarRocks详解:第三部分StarRocks分区分桶(第53天)

文章目录 前言2.3 数据分布2.3.1 数据分布概览2.3.1.1 常见的数据分布方式2.3.1.2 StarRocks的数据分布方式2.3.1.3 分区2.3.1.4 分桶 2.3.2 创建分区2.3.2.1 表达式分区2.3.2.1.1 时间函数表达式分区&#xff08;自v3.1&#xff09;2.3.2.1.2 列表达式分区&#xff08;自v3.1&…

EAK水冷电阻60kW负载制动电阻器

描述 EAK制动电阻器 液冷电阻器将多余的制动能量转化为有用的热量&#xff0c;因此非常适合电动或混合动力驱动。与传统的风冷制动电阻器相比&#xff0c;水冷可节省高达 88% 的额外空间。作为一个额外的功能&#xff0c;电阻器可以很容易地与无滴漏的快速紧固件连接。由于即使…

注意力特征融合

摘要 https://arxiv.org/pdf/2009.14082 特征融合&#xff0c;即来自不同层或分支的特征的组合&#xff0c;是现代网络架构中无处不在的一部分。它通常通过简单的操作来实现&#xff0c;如求和或拼接&#xff0c;但这可能不是最佳选择。在这项工作中&#xff0c;我们提出了一种…

【Mybatis】浅谈Mybatis的缓存机制,一级缓存和二级缓存

目录 1. 缓存机制介绍 2. 一级缓存 3. 二级缓存 4. mybatis缓存执行流程 1. 缓存机制介绍 MyBatis 的缓存机制是为了提高应用程序的性能而设计的&#xff0c;通过缓存策略来减少数据库的查询次数。MyBatis 提供了两种类型的缓存&#xff1a;一级缓存和二级缓存。 默认情况下…

web框架:Django进阶(二)

文章目录 Django进阶&#xff08;二&#xff09;1.orm1.1 基本操作1.2 连接数据库1.3 连接池1.4 多数据库1.4.1 读写分离1.4.2 分库&#xff08;多个app ->多数据库&#xff09;1.4.3 分库&#xff08;单app&#xff09;1.4.4 注意事项 1.5 表关系1.6 数据操作单表一对多正向…

IIS解析漏洞~ IIS7.漏洞分析

IIS解析漏洞 文件解析漏洞是由于中间件错误的将特殊格式的文件解析成可执行网页文件(脚本)&#xff0c;配合文件上传漏洞进行GetShell的漏洞&#xff01; 1.2&#xff1a;IIS7.X 在IIS7.0和IIS7.5版本下也存在解析漏洞&#xff0c;在默认Fast-CGI开启状况下&#xff0c;在一个文…

Modbus通讯协议

Modbus通讯协议 Modbus协议是一种用于电子控制器之间的通信协议&#xff0c;‌它允许不同类型的设备之间进行通信&#xff0c;‌以便进行数据交换和控制。‌Modbus协议最初为可编程逻辑控制器&#xff08;‌PLC&#xff09;‌通信开发&#xff0c;‌现已广泛应用于工业自动化领…