C++笔记3•类和对象2•

news2024/12/23 16:48:11

1.类的6个默认成员函数

概念:
默认成员函数是用户没有显式实现,编译器会生成的成员函数称为默认成员函数。其中包括

构造函数、析构函数、拷贝构造、赋值重载、普通对象取地址重载、const对象取地址重载。也就是说类在空的情况下,空类中也不是什么也没有,会包含这六个默认成员函数。

 2.构造函数

(1)定义:

       构造函数是一个 特殊的成员函数,名字与类名相同 , 创建类类型对象时由编译器自动调用 ,以保证每个数据成员都有一个合适的初始值,并且在对象整个生命周期内只调用一次。
(2)特点:
       构造函数 是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象,而是初始化对象
      1) 函数名与类名相同
      2) 无返回值
      3) 对象实例化时编译器 自动调用 对应的构造函数。
      4)构造函数可以重载。见下面代码示例:
//对  4)构造函数可以重载进行解释 。

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;

class Date
{
public:
	//默认构造函数有三种:1.自己实现无参的构造函数 2.自己实现全缺省的构造函数 3.编译器自己生成的构造函数  三个只能存在一个
	//默认构造函数就是:不用参数就可以调用

1.无参的构造函数
//Date() //对构造函数进行初始化
//{
//	_year = 1;
//	_month = 1;
//	_day = 1;
//}
2.有参的构造函数
//Date(int year, int month, int day) //传参 对构造函数进行初始化
//{
//	_year = year;
//	_month = month;
//	_day = day;
//}
//3.传缺省值的构造函数
    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 d1;//无参   自动调用构造函数
    //Date d1(); 错误写法,编译无法通过,
    //注意:如果通过无参构造函数创建对象时,对象后面不用跟括号,否则就成了函数声明

	Date d1(2024,8,6);//自动调用构造函数初始化 传参(参数全缺省)
	d1.Print();
	
	return 0;

}

//其中3是对1和2的合并,在传缺省值时,可以传参数也可以不用传参数,所以一般我们就用传缺省这样来写构造函数,1和3是构造函数的重载,但是它们不能同时存在,原因是Date d1;像这样无参进行初始化时,不知道先去调用哪个。所以二者只能存在一个,说白了就是构造函数只能存在一个。
  5)如果类中没有显式定义(就是自己写的)构造函数,则 C++ 编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成。(要么自己写,要么编译器自动生成,只能有一个,一山不容二虎),见下面代码示例:
 class Date
 {
  public:
 /*
 // 如果用户显式定义了构造函数,编译器将不再生成
 Date(int year, int month, int day)
 {
 _year = year;
 _month = month;
 _day = day;
 }
 */
 
 void Print()
 {
 cout << _year << "-" << _month << "-" << _day << endl;
 }
  
  private:
 int _year;
 int _month;
 int _day;
 };
  
 int main()
 {
  Date d1;
  return 0;
 }
//说明
// 将Date类中构造函数屏蔽后,代码可以通过编译,因为编译器生成了一个无参的默认构造函数
// 将Date类中构造函数放开,代码编译失败,因为一旦显式定义任何构造函数,编译器将不再生成
// 无参构造函数,放开后报错:error C2512: “Date”: 没有合适的默认构造函数可用
 6)(语法坑)C++把类型分成内置类型 ( 基本类型 ) 和自定义类型。内置类型就是语言提供的数据类 型,如:int/char... ,自定义类型就是我们使用 class/struct/union等自己定义的类型;在C++中,如果自己 不去实现构造函数的情况下(自己不写),编译器会自动

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

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

相关文章

Linux shell脚本实战案例

文章目录 1. 基础案例&#xff1a;显示系统信息2. 文件备份案例3. 自动安装软件案例4. 批量重命名文件案例5. 监控磁盘空间案例6. 定时任务案例&#xff1a;定期清理日志文件7. 错误处理和日志记录案例&#xff1a;安全地运行命令8. 备份数据库案例&#xff1a;定期备份MySQL数…

Waterfox vG6.0.8 官方版下载及安装步骤(一款响应速度非常快的浏览器)

前言 Waterfox 水狐浏览器&#xff0c;从字面上我们可以轻松的了解该款浏览器的一些特点。Waterfox是通过Mozilla官方认证的纯64位版火狐浏览器&#xff0c;而Waterfox 10采用Firefox 10官方源码编译而成&#xff0c;改进了大内存和64位计算的细节&#xff0c;在64位Windows系…

haproxy整理

haproxy 1.1 haproxy简介 HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件 是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器&#xff0c;支持基于cookie的持久性&#xff0c;自动故障切换&#xff0c;支持正则表达式及web状态统…

Linux10 三剑客 正则表达式

三剑客 grep 擅长过滤&#xff0c;按行过滤 首先要把多个虚拟机的网络改成一种形式 爆破攻击&#xff1a;‌爆破攻击是一种尝试通过穷举法&#xff08;即尝试所有可能的组合&#xff09;来破解密码或身份验证的方法。这种攻击通常用于尝试登录到系统、网络或应用程序&#…

《系统架构设计师教程(第2版)》第14章-云原生架构设计理论与实践-04-云原生架构案例分析(二)云原生技术助力某汽车公司数字化转型实践

文章目录 1. 背景和挑战2. 基于云原生架构的解决方案3. 应用效益 1. 背景和挑战 汽车行业正迅速步入数字化时代。车企服务的对象发生变化&#xff0c;从购车市场转为覆盖后车市场的全周期&#xff0c;通过互联网渠道直面客户&#xff0c;服务客户急速增多。为适配客户快速变化…

【面试题】N皇后

N皇后 仅供学习 一、问题描述 n 皇后问题是一个经典的组合问题&#xff0c;可以通过回溯算法来解决。 二、python代码 def solve_n_queens(n):def can_place(row, col):# 检查这一行之前是否有列可以放置皇后for i in range(row):if board[i] col or abs(board[i] - col) …

【myz_tools】python库:算法与文档生成

写在前面 本来最开始只是单纯的想整理一下常用到的各类算法&#xff0c;还有一些辅助类的函数&#xff0c;方便时间短的情况下快速开发。后来发现整理成库更方便些&#xff0c;索性做成库&#xff0c;通过pip install 直接可以安装使用 关于库 平时见到的各类算法大多数还是…

抽象语法树AST

什么是AST 在计算机科学中&#xff0c;抽象语法树&#xff08;Abstract Syntax Tree&#xff0c;AST&#xff09;&#xff0c;或简称语法树&#xff08;Syntax tree&#xff09;&#xff0c;是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构&#xff0c…

【Linux】系列入门摘抄笔记-7-用户和用户组管理

用户分类 在Linux操作系统项用户的类型一般分为超级管理员(root)、系统用户和普通用户三类: (1)超级管理员:即root用户,在整个Linux操作系统中权限最高,权限最高也意味着风险最高,若操作失误就可能使整个系统崩溃。 (2)系统用户:默认不登录操作系统,用于运行和维…

大模型常见面试题解析【附答案版】

1、在Transformer模型中&#xff0c;为什么scaled dot-product attention在计算QK内积之后要除以根号d&#xff1f; 简单来说&#xff0c;就是需要压缩softmax输入值&#xff0c;以免输入值过大&#xff0c;进入了softmax的饱和区&#xff0c;导致梯度值太小而难以训练。如果不…

哈希以及闭散列和开散列

哈希 一、哈希1、概念2、哈希冲突 二、哈希函数1、设计原则2、常见的哈希函数&#xff08;1&#xff09;直接定址法&#xff08;2&#xff09;除留余数法&#xff08;3&#xff09;平方取中法&#xff08;4&#xff09;折叠法&#xff08;5&#xff09;随机数法&#xff08;6&a…

期权快到期卖不出去了怎么办 ?

期权在最后交易日如果平仓卖不出去&#xff0c;说明没有市场参与者愿意以你的报价买入该期权。这种情况通常出现在期权价值极低&#xff0c;接近于0&#xff0c;或者期权已经深度虚值&#xff0c;即行权价远离当前市场价格而且剩余时间已非常有限&#xff0c;使得该期权的内在价…

vue选中下拉框数据,但是值没有填充到框内

​​ 下拉框选中数据后&#xff0c;roomType的值没有自动更新 查找资料后的已解决&#xff0c;特此记录。 解决办法&#xff1a; 加入强制更新时间 <el-form-item label"房型" prop"roomType"><el-select v-model"form.roomType" pla…

RAG问答系统|QAnything:多类型文本的知识库,安全可靠、一键离线部署

转自老贾探AI 在日常生活和工作中&#xff0c;我们经常面对大量本地信息资料&#xff08;如PDF、Doc等&#xff09;&#xff0c;需要进行关联理解和处理。频繁地切换和区分文件格式&#xff0c;再加上需要跨语言理解的环境&#xff0c;使得如何找到一个准确、快速、可靠地处理文…

48天笔试训练错题——day48

目录 选择题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 编程题 1. 左右最值最大差 2. 顺时针打印矩阵 选择题 1. cookie 是浏览器存储数据的机制&#xff0c;是用于维护 http 通信当中客户端的用户信息的。 2. 403 Forbidden 表示资源不可用&#xff0c;服务器理解客户请…

前端案例:酷我音乐项目(移动端自适应)(HTML+CSS)

一个简单的移动端案例&#xff0c;模拟不同设备下逻辑分辨率不同&#xff0c;宽高自适应 正常打开整体布局 打开 f12 &#xff08;ctrl shift M&#xff09;或者点击左上角图标,将其模拟为移动端设备 在移动设备iPhone6/7/8&#xff0c;逻辑分辨率375的整体布局 头部和底部的…

虚幻5|角色武器装备的数据库学习(不只是用来装备武器,甚至是角色切换也很可能用到)

虚幻5|在连招基础上&#xff0c;给角色添加武器并添加刀光|在攻击的时候添加武器并返回背后&#xff08;第一部分&#xff0c;下一部分讲刀光&#xff09;_unreal 如何给角色添加攻击-CSDN博客 目的&#xff1a;捡起各种不同的武器&#xff0c;捡起的武器跟装备的武器相匹配 …

C语言日常练习 Day15

目录 一、猴子吃桃问题。 二、两个乒乓球队进行比赛&#xff0c;各出3个人。甲队为A&#xff0c;B&#xff0c;C3人&#xff0c;乙队为X&#xff0c;Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单&#xff0c;A说他不和X比赛&#xff0c;C说他不和X&#xff0c;Z比赛…

Java爬虫中的数据清洗:去除无效信息的技巧

在互联网信息爆炸的时代&#xff0c;数据的获取变得异常容易&#xff0c;但随之而来的是数据质量的问题。对于Java爬虫开发者来说&#xff0c;如何从海量的网页数据中清洗出有价值的信息&#xff0c;是一个既基础又关键的步骤。本文将介绍Java爬虫中数据清洗的重要性&#xff0…

VBA自动发邮件如何配置SMTP实现外部发送?

VBA自动发邮件的教程&#xff1f;如何利用VBA自动化发送邮件&#xff1f; 在使用VBA进行自动化办公任务时&#xff0c;自动发送邮件是一项非常实用的功能。AokSend将详细介绍如何通过VBA自动发邮件&#xff0c;并配置SMTP实现外部发送的过程。 VBA自动发邮件&#xff1a;准备…