C++ 学习笔记(四)—— 类和对象

1、this指针
class Date
{
public:void Init(Date* this, int year, int month, int day){this->_year = year;this->_month = month;this->_day = day;this->Print();//  这就是this指针,是编译器自己加的,是用来让成员函数找到成员变量的位置的;//  this在实参和形参位置不能显示写,但在类里面可以显示的用;cout << this << endl;}void Print(){cout << _year << endl;}private:int _year;int _month;int _day;
};

小扩展:

1)this指针存在哪?(栈、堆、静态区、常亮区)

答:this是一个形参,一般是存在栈里面;有些编译器(如VS)会优化,直接用寄存器加载;

2、类的6个默认成员函数

如果一个类中什么成员都没有,简称为空类;

空类中真的什么都没有吗?其实并不是,任何类在什么都不写时,编译器也会自动生成6个默认成员函数;

默认成员函数的定义也就是用户没有显式实现,编译器会自动生成的成员函数;

六个默认成员函数:

  1. 初始化和清理:构造函数主要完成初始化的工作;析构函数主要完成清理工作;
  2. 拷贝复制:拷贝构造是使用同类对象初始化创建对象;赋值重载主要是把一个对象赋值给另一个对象;
  3. 取地址重载:主要是普通对象和const对象取地址,这两个很少会自己实现;

构造函数:

构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象,而是初始化对象。

特征:1)函数名与类名相同;2)无返回值(void也不需要写);3)对象实例化时编译器自动调用对应的构造函数;4)构造函数可以重载(写多个构造函数,提供多个初始化方式);

class Date
{
public:Date(){_year = 1;_month = 1;_day = 1;}Date(int year, int month, int day){_year = year;_month = month;_day = day;}//  将上述两个构造函数合并为一个全缺省构造函数,更为灵活;Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}void Print(){cout << _year << "/" << _month << "/" << _day << endl;}private:int _year;int _month;int _day;
}int main()
{Date dd;  //  此处注意不能写成“Date dd()”,会识别成一个函数声明的;dd.Print();  //  咱们这里会发现dd已经被初始化为“1/1/1”了,如果没有构造函数,这里出来的会是随机值;Date dd2(2023, 01, 01);dd2.Print();  //  此处输出“2023/01/01”;return 0;
}

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

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

相关文章

SpringMVC全局异常处理机制

异常处理机制 异常处理的两种方式&#xff1a; 编程式异常处理&#xff1a;是指在代码中显式地编写处理异常的逻辑。它通常涉及到对异常类型的检测及其处理&#xff0c;例如使用 try-catch 块来捕获异常&#xff0c;然后在 catch 块中编写特定的处理代码&#xff0c;或者在 f…

深入LangChain:LLM交互机制与RAG集成的技术

本文将聚焦于 LangChain 如何集成检索增强生成&#xff08;RAG&#xff09;&#xff0c;了解其架构、主要组件&#xff0c;以及与 LLM 的交互 LangChain 架构概览 1、基础层 这是与各类 LLM 对接的 “桥梁”。LangChain 支持多种流行的 LLM&#xff0c;如 OpenAI 的系列模型、H…

本地部署 LangManus

本地部署 LangManus 0. 引言1. 部署 LangManus2. 部署 LangManus Web UI 0. 引言 LangManus 是一个社区驱动的 AI 自动化框架&#xff0c;它建立在开源社区的卓越工作基础之上。我们的目标是将语言模型与专业工具&#xff08;如网络搜索、爬虫和 Python 代码执行&#xff09;相…

SQL注入(SQL Injection)攻击原理与防御措施

SQL是一种代码注入技术&#xff0c;可使攻击者修改应用程序向数据库提供的查询。 迄今为止&#xff0c;最常见和最严重的应用 程序安全威胁总是隐藏在与数据库有某些连接的网络应用 程序中。 通过这种 SQL 注入&#xff0c;攻击者可以绕过登录程序&#xff0c;获取、更改甚至更…

【算法】十大排序算法(含时间复杂度、核心思想)

以下是 **十大经典排序算法** 的时间复杂度、空间复杂度及稳定性总结&#xff0c;适用于面试快速回顾&#xff1a;排序算法对比表 排序算法最佳时间复杂度平均时间复杂度最差时间复杂度空间复杂度稳定性核心思想冒泡排序O(n)O(n)O(n)O(1)稳定相邻元素交换&#xff0c;大数沉底…

LVS的 NAT 模式实现 3 台RS的轮询访问

使用LVS的 NAT 模式实现 3 台RS的轮询访问 1.配置 RS&#xff08;NAT模式&#xff09;2. 配置 LVS 主机&#xff08;仅主机、NAT模式&#xff09;2.1 配置仅主机网卡&#xff08;192.168.66.150/24 VIP &#xff09;2.2 配置 NAT 网卡&#xff08;192.168.88.6/24 DIP&#xff…

一、MySQL8的my.ini文件

MySQL8.0.11的安装版本my.ini配置文件默认存放在&#xff1a;C:/Program Files/MySQL/MySQL Server 8.0/ 目录下&#xff1b;而MySQL8.0.11绿色免安装版本是没有my.ini配置文件&#xff0c;用户可以自行构建后&#xff0c;再通过my.ini进行数据库的相关配置 一、MySQL8.0.11默…

微调这件小事:训练集中的输入数据该作为instruction还是input?从LLaMA-Factory的源码中寻找答案吧~

在之前的博文中,我们已经了解了LLaMA-Factory框架执行各类任务的流程。今天,我们将深入探讨SFT微调过程中关于数据集的两个关键问题: 数据集中的instruction和input是如何结合起来生成大模型可以理解的输入的?instruction是不是就是system prompt呢?(之所以会问这个问题,…

nacos-actuator漏洞

1、nacos配置文件添加以下配置 vim application.properties# 添加以下配置项 management.endpoints.enabled-by-defaultfalse management.server.port-12、重启Nacos systemctl restart nacos3、验证 打开地址http://ip:port/nacos/actuator查看是否有敏感信息输出&#xff0…

extern关键字的用法

目录 总述 一、声明外部变量 二、声明外部函数 三、实现模块化编程 四、与"C" 连用&#xff0c;实现C和C的混合编程 五、注意事项 六、疑点补充&#xff08;你可能会有和我一样的疑问&#xff1f;&#xff09; 总述 在C和C中&#xff0c;extern关键字用于声明外…

Jboss漏洞再现

一、CVE-2015-7501 1、开环境 2、访问地址 / invoker/JMXInvokerServlet 出现了让下载的页面&#xff0c;说明有漏洞 3、下载ysoserial工具进行漏洞利用 4、在cmd运行 看到可以成功运行&#xff0c;接下来去base64编码我们反弹shell的命令 5、执行命令 java -jar ysoserial-…

Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现

一、前言 在移动互联网蓬勃发展的今天&#xff0c;视频播放功能已成为众多Android应用的核心特性之一。面对多样化的视频格式和传输协议&#xff0c;开发一款高效、稳定的视频播放器是许多开发者追求的目标。FLV&#xff08;Flash Video&#xff09;格式&#xff0c;尽管随着H…

BUAA XCPC 2025 Spring Training 2

C \color{green}{\texttt{C}} C [Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] 给定一棵以 1 1 1 为根的树&#xff0c;记 a i a_{i} ai​ 表示节点 i i i 的权值&#xff0c; lca( i , j ) \text{lca(}i,j) lca(i,j) 表示节…

MySQL 中,分库分表机制和分表分库策略

在 MySQL 中,分库分表是一种常见的数据库水平扩展方案,用于解决单库单表数据量过大导致的性能瓶颈问题。通过将数据分散到多个数据库或表中,可以提高系统的并发处理能力、降低单点故障风险,并提升查询性能。 一、分库分表的作用 提升性能: 分散数据存储和查询压力,避免单…

组件日志——etcd

目录 一、简介 二、安装【Ubuntu】 安装etcd 安装CAPI 三、写一个示例 3.0写一个示例代码 3.1获取一个etcd服务 3.2获取租约(写端操作) 3.3使用租约(写端操作) 3.4销毁租约(写端操作) 3.5获取etcd服务中的服务列表(读端操作) 3.6监听状态变化(读端操作) 一、简介 Et…

python网络爬虫开发实战之网页数据的解析提取

目录 1 XPath的使用 1.1 XPath概览 1.2 XPath常用规则 1.3 准备工作 1.4 实例引入 1.5 所有节点 1.6 节点 1.7 父节点 1.8 属性匹配 1.9 文本获取 1.10 属性获取 1.11 属性多值匹配 1.12 多属性匹配 1.13 按序选择 1.14 节点轴选择 2 Beautiful Soup 2.1 简介…

理解操作系统(一)冯诺依曼结构和什么是操作系统

认识冯诺依曼系统 操作系统概念与定位 深⼊理解进程概念&#xff0c;了解PCB 学习进程状态&#xff0c;学会创建进程&#xff0c;掌握僵⼫进程和孤⼉进程&#xff0c;及其形成原因和危害 1. 冯诺依曼体系结构 我们常⻅的计算机&#xff0c;如笔记本。我们不常⻅的计算机&am…

Tomcat常见漏洞攻略

一、CVE-2017-12615 漏洞原理&#xff1a;当在Tomcat的conf&#xff08;配置⽬录下&#xff09;/web.xml配置⽂件中添加readonly设置为false时&#xff0c;将导致该漏洞产 生&#xff0c;&#xff08;需要允许put请求&#xff09; , 攻击者可以利⽤PUT方法通过精心构造的数据包…

快速求出质数

要快速判断一个数是否为质数&#xff0c;可以采用以下优化后的试除法&#xff0c;结合数学规律大幅减少计算量&#xff1a; 步骤说明 处理特殊情况&#xff1a; 若 ( n \leq 1 )&#xff0c;不是质数。若 ( n 2 ) 或 ( n 3 )&#xff0c;是质数。若 ( n ) 能被 2 或 3 整除&…

Linux上位机开发实战(camera视频读取)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 关于linux camera&#xff0c;一般都是认为是mipi camera&#xff0c;或者是usb camera。当然不管是哪一种&#xff0c;底层的逻辑都是v4l2&#x…