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

【C++】类和对象(五)

1、初始化列表

作用:C++提供了初始化列表语法,用来初始化属性。

语法:

构造函数():属性1(值1),属性2(值2)...{}

示例:

#include<iostream>
using namespace std;
class   person
{
public://传统的赋值person(int a, int b, int c){m_a = a;m_b = b;m_c = c;}int m_a;int m_b;int m_c;
};
int main()
{person p(1, 2, 3);cout << "m_a=" << p.m_a << endl;cout << "m_b=" << p.m_b << endl;cout << "m_c=" << p.m_c << endl;return 0;
}

结果:

代码:

#include<iostream>
using namespace std;
class   person
{
public://初始化列表初始化属性person():m_a(1),m_b(2),m_c(3){}int m_a;int m_b;int m_c;
};
int main()
{person p;cout << "m_a=" << p.m_a << endl;cout << "m_b=" << p.m_b << endl;cout << "m_c=" << p.m_c << endl;return 0;
}

结果:

由于这种代码的固定性,一般这样使用初始化列表

代码:

#include<iostream>
using namespace std;
class   person
{
public://初始化列表初始化属性,意思是:m_a=a,m_b=b,m_c=cperson(int a,int b,int c):m_a(a),m_b(b),m_c(c){}int m_a;int m_b;int m_c;
};
int main()
{person p(5,4,1);cout << "m_a=" << p.m_a << endl;cout << "m_b=" << p.m_b << endl;cout << "m_c=" << p.m_c << endl;return 0;
}

结果:

2、拷贝构造函数调用时机

C++中拷贝构造函数调用时机通常有三种情况:

(1)使用一个已经创建完毕当代对象来初始化一个新对象。

(2)值传递的方式给函数参数传值。

(3)以值方式返回局部对象。

示例://1、使用一个已经创建完毕的对象来初始化一个新对象

代码:

#include<iostream>
using  namespace std;
class person
{
public:person(){cout << "person默认构造函数调用" << endl;}~person(){cout << "person析构函数调用" << endl;}person(int age){m_age = age;cout << "person有参构造函数调用" << endl;}person(const person& p){m_age = p.m_age;cout << "person拷贝构造函数调用" << endl;}int m_age;
};
//1、使用一个已经创建完毕的对象来初始化一个新对象
void  test01()
{person p1(20);person p2(p1);cout << "p2的年龄为:" << p2.m_age << endl;
}
int main()
{test01();return 0;
}

结果:

示例://2、值传递的方式给函数参数传值

#include<iostream>
using  namespace std;
class person
{
public:person(){cout << "person默认构造函数调用" << endl;}~person(){cout << "person析构函数调用" << endl;}person(int age){m_age = age;cout << "person有参构造函数调用" << endl;}person(const person& p){m_age = p.m_age;cout << "person拷贝构造函数调用" << endl;}int m_age;
};
//2、值传递的方式给函数参数传值void dowork(person p)
{}
void test02()
{person p;dowork(p);
}
int main()
{test02();return 0;
}

结果:

示例://值方式返回局部对象

代码:

#include<iostream>
using  namespace std;
class person
{
public:person(){cout << "person默认构造函数调用" << endl;}~person(){cout << "person析构函数调用" << endl;}person(int age){m_age = age;cout << "person有参构造函数调用" << endl;}person(const person& p){m_age = p.m_age;cout << "person拷贝构造函数调用" << endl;}int m_age;
};
//值方式返回局部对象
person  dowork()
{person p1;return p1;
}
void test03()
{person p2= dowork();}
int main()
{test03();return 0;
}

结果:

3、构造函数调用规则

默认情况下,C++编译器至少给一个类添加3个函数:

(1)默认构造函数(无参,函数体为空)

(2)默认析构函数(无参,函数体为空)

(3)默认拷贝构造函数,对属性进行值拷贝。

构造函数调用规则如下:

(1)如果用户定义有参构造函数,C++不再提供默认无参构造函数,但是会提供默认拷贝构造函数。

(2)如果用户定义拷贝构造函数,C++不再提供其他构造函数。

相关文章:

【C++】类和对象(五)

1、初始化列表 作用&#xff1a;C提供了初始化列表语法&#xff0c;用来初始化属性。 语法&#xff1a; 构造函数&#xff08;&#xff09;&#xff1a;属性1&#xff08;值1&#xff09;&#xff0c;属性2&#xff08;值2&#xff09;...{}示例&#xff1a; #include<i…...

超分辨率体积重建实现术前前列腺MRI和大病理切片组织病理学图像的3D配准

摘要: 磁共振成像(MRI)在前列腺癌诊断和治疗中的应用正在迅速增加。然而,在MRI上识别癌症的存在和范围仍然具有挑战性,导致即使是专家放射科医生在检测结果上也存在高度变异性。提高MRI上的癌症检测能力对于减少这种变异性并最大化MRI的临床效用至关重要。迄今为止,这种改…...

第13章 深入volatile关键字(Java高并发编程详解:多线程与系统设计)

1.并发编程的三个重要特性 并发编程有三个至关重要的特性&#xff0c;分别是原子性、有序性和可见性 1.1 原子性 所谓原子性是指在一次的操作或者多次操作中&#xff0c;要么所有的操作全部都得到了执行并 且不会受到任何因素的干扰而中断&#xff0c;要么所有的操作都不执行…...

[STM32 标准库]定时器输出PWM配置流程 PWM模式解析

前言&#xff1a; 本文内容基本来自江协&#xff0c;整理起来方便日后开发使用。MCU&#xff1a;STM32F103C8T6。 一、配置流程 1、开启GPIO&#xff0c;TIM的时钟 /*开启时钟*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //开启TIM2的时钟RCC_APB2PeriphClockC…...

web3py+flask+ganache的智能合约教育平台

最近在学习web3的接口文档&#xff0c;使用web3pyflaskganache写了一个简易的智能合约教育平台&#xff0c;语言用的是python&#xff0c;ganche直接使用的本地区块链网络&#xff0c;用web3py进行交互。 代码逻辑不难&#xff0c;可以私信或者到我的闲鱼号夏沫mds获取我的代码…...

< OS 有关 > 阿里云:轻量应用服务器 的使用 :轻量化 阿里云 vpm 主机

原因&#xff1a; &#xff1c; OS 有关 &#xff1e; 阿里云&#xff1a;轻量应用服务器 的使用 &#xff1a;从新开始 配置 SSH 主机名 DNS Tailscale 更新OS安装包 最主要是 清除阿里云客户端这个性能杀手-CSDN博客 防止 I/O 祸害系统 操作&#xff1a; 查看进程&#x…...

【技术】TensorRT 10.7 安装指南(Ubuntu22.04)

原文链接&#xff1a;https://mengwoods.github.io/post/tech/008-tensorrt-installation/ 本文安装的版本如下&#xff1a; Ubuntu 22.04 Nvidia Driver 538.78 CUDA 12.2 cuDNN 8.9.7 TensorRT 10.7 安装前的准备&#xff08;可选&#xff09; 在安装新版本之前&#xf…...

Linux 权限管理

hello&#xff01;这里是敲代码的小董&#xff0c;很荣幸您阅读此文&#xff0c;本文只是自己在学习Linux过程中的笔记&#xff0c;如有不足&#xff0c;期待您的评论指点和关注&#xff0c;欢迎欢迎~~ ✨✨个人主页&#xff1a;敲代码的小董 &#x1f497;&#x1f497;系列专…...

8.2 从看图识字到智能解读:GPT-4 with Vision 开启多模态 AI 新纪元

从看图识字到智能解读:GPT-4 with Vision 开启多模态 AI 新纪元 引言:AI 的多模态跃迁 随着人工智能技术的快速发展,我们正迈入一个新的智能交互时代。传统的 AI 模型主要聚焦于文本处理,而多模态 AI 模型如 GPT-4 with Vision(GPT-4V) 则能够同时处理图像和文本。GPT-4…...

差分轮算法-两个轮子计算速度的方法-阿克曼四轮小车计算方法

四轮驱小车的话&#xff1a; 转向角度计算方法&#xff1a;float turning_angle z_angular / x_linear; // 转向角度&#xff0c;单位为弧度 速度的话直接用线速度 两轮驱动小车&#xff1a; 计算公式&#xff1a; leftSpeed x_linear - z_angular * ORIGINBOT_WHEEL_TRACK /…...

使用.NET 8构建高效的时间日期帮助类

使用.NET 8构建高效的时间日期帮助类 在现代Web应用程序中&#xff0c;处理日期和时间是一个常见的需求。无论是记录日志、生成报告还是进行数据分析&#xff0c;正确处理日期和时间对于确保数据的准确性和一致性至关重要。本文将详细介绍如何使用ASP.NET Core和C#构建一个高效…...

学习std::is_base_of笔记

1、std::is_base_of简介 在现代 C 中&#xff0c;模板元编程&#xff08;Template Metaprogramming&#xff09;是一种非常强大的编程技巧&#xff0c;它让我们能够在编译期进行类型推导和约束。而 std::is_base_of 是一个重要的工具&#xff0c;可以用来检查一个类型是否是另…...

第 25 场 蓝桥月赛

3.过年【算法赛】 - 蓝桥云课 问题描述 蓝桥村的村民们正准备迎接新年。他们计划宰杀 N 头猪&#xff0c;以庆祝一整年的辛勤劳作和丰收。每头猪的初始位置位于下标 xi​&#xff0c;所有 xi​ 均为偶数&#xff0c;保证没有两头猪初始位置相同。 当猪意识到人类打算宰杀它们…...

【设计模式-行为型】访问者模式

一、什么是访问者模式 说起来访问者模式&#xff0c;其实很少用。我一直在思考该用什么样的例子把这个设计模式表述清晰&#xff0c;最近突然想到一个例子也许他就是访问者。港片有过很辉煌的年代&#xff0c;小的时候一直在看港片觉得拍的非常好&#xff0c;而且演员的演技也在…...

无人机微波图像传输数据链技术详解

无人机微波图像传输数据链技术是无人机通信系统中的关键组成部分&#xff0c;它确保了无人机与地面站之间高效、可靠的图像数据传输。以下是对该技术的详细解析&#xff1a; 一、技术原理 无人机微波图像传输数据链主要基于微波通信技术实现。在数据链路中&#xff0c;图像数…...

SpringCloud系列教程:微服务的未来(十七)监听Nacos配置变更、更新路由、实现动态路由

前言 在微服务架构中&#xff0c;API 网关是各个服务之间的入口点&#xff0c;承担着路由、负载均衡、安全认证等重要功能。为了实现动态的路由配置管理&#xff0c;通常需要通过中心化的配置管理系统来实现灵活的路由更新&#xff0c;而无需重启网关服务。Nacos 作为一个开源…...

【QT】 控件 -- 显示类

&#x1f525; 目录 [TOC]( &#x1f525; 目录) 1. 前言 2. 显示类控件2.1 Label 1、显示不同文本2、显示图片3、文本对齐、自动换行、缩进、边距4、设置伙伴 3.2 LCD Number 3.3 ProgressBar 3.4 Calendar Widget 3. 共勉 &#x1f525; 1. 前言 之前我在上一篇文章【QT】…...

反馈驱动、上下文学习、多语言检索增强等 | Big Model Weekly 第55期

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 01 A Bayesian Approach to Harnessing the Power of LLMs in Authorship Attribution 传统方法严重依赖手动特征&#xff0c;无法捕捉长距离相关性&#xff0c;限制了其有效性。最近的研究利用预训练语言模型的…...

CF 41A.Translation(Java实现)

题目分析 根据示例千言万语一句话&#xff0c;reverse 思路分析 将读取的值分ab&#xff0c;再将b.reverse和a比较&#xff0c;一样就YES 代码 import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String …...

14【学历和能力哪个更重要】

这是很多学习的人有的一个疑问&#xff0c;并提出想让我发表下看法&#xff0c;前面一直没空&#xff0c;我刚好完结了一个项目&#xff0c;最近又有时间更新图文课程了&#xff0c;就展开来讲讲 主流的说法有2个 1&#xff1a;学历重要&#xff0c;依据是很多公司招聘都有学历…...

告别环境混乱:Python3.9镜像实战教程,独立环境管理如此简单

告别环境混乱&#xff1a;Python3.9镜像实战教程&#xff0c;独立环境管理如此简单 1. 为什么需要Python3.9镜像 在Python开发中&#xff0c;最令人头疼的问题莫过于环境冲突。想象一下这样的场景&#xff1a;你正在开发一个需要TensorFlow 2.4的项目&#xff0c;但同时还要维…...

从实例出发:宏平均、微平均与权重平均的计算与应用解析

1. 从混淆矩阵说起&#xff1a;理解评估指标的基础 在机器学习分类任务中&#xff0c;我们经常需要评估模型的性能。这时候就离不开混淆矩阵这个基础工具。假设我们有一个二分类问题&#xff0c;类别分别是"是"和"否"。混淆矩阵会告诉我们模型预测的正确和…...

3步实现风扇智能控制:Windows系统散热与噪音平衡全指南

3步实现风扇智能控制&#xff1a;Windows系统散热与噪音平衡全指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…...

【数字信号检测】迫零算法大规模MIMO低复杂度信号检测【含Matlab源码 15237期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…...

高等数学实战解析:定积分换元法与分部积分法的核心技巧

1. 定积分换元法的实战技巧 第一次接触定积分换元法时&#xff0c;我完全被那些符号变换绕晕了。直到后来在物理实验中遇到一个弹簧振子的能量计算问题&#xff0c;才真正明白这个方法的精妙之处。想象你手里拿着一根橡皮筋&#xff0c;想要测量拉伸它需要的总能量——这就是定…...

比迪丽LoRA模型Mathtype式交互:设计公式化提示词编辑器提升创作精度

比迪丽LoRA模型Mathtype式交互&#xff1a;设计公式化提示词编辑器提升创作精度 不知道你有没有过这样的经历&#xff1a;面对一个功能强大的AI绘画模型&#xff0c;比如集成了各种LoRA的比迪丽&#xff0c;脑子里明明有非常具体的画面&#xff0c;但就是不知道该怎么用文字描…...

别再死记公式了!用Python的SymPy库5分钟搞定雅可比矩阵计算(附机器人学实例)

用SymPy解放双手&#xff1a;5分钟完成雅可比矩阵的符号计算与机器人学应用 记得研究生时期推导机械臂动力学方程&#xff0c;我曾在草稿纸上密密麻麻写满三页偏导数&#xff0c;最后发现一个正负号错误导致全部重算。直到遇见SymPy——这个Python符号计算库彻底改变了我的工作…...

终极指南:3分钟掌握原神圣遗物扫描工具Amenoma的完整使用技巧 [特殊字符]

终极指南&#xff1a;3分钟掌握原神圣遗物扫描工具Amenoma的完整使用技巧 &#x1f3af; 【免费下载链接】Amenoma A simple desktop application to scan and export Genshin Impact Artifacts and Materials. 项目地址: https://gitcode.com/gh_mirrors/am/Amenoma 还…...

libtorrent会话管理终极指南:10个关键配置参数详解

libtorrent会话管理终极指南&#xff1a;10个关键配置参数详解 【免费下载链接】libtorrent an efficient feature complete C bittorrent implementation 项目地址: https://gitcode.com/gh_mirrors/li/libtorrent libtorrent是一个高效且功能完善的C BitTorrent实现&a…...

实战指南 | TSMaster 的 CAN UDS 诊断自动化流程与 BootLoader 刷写详解

1. TSMaster诊断控制台深度解析 诊断控制台是TSMaster进行UDS诊断的核心操作界面&#xff0c;相当于工程师与ECU对话的"翻译器"。我第一次接触这个界面时&#xff0c;被它清晰的四分区设计惊艳到了——就像汽车仪表盘把转速、车速、油量分区域显示一样直观。 服务命令…...