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

标准输入输出流,面向对象,构造函数

标准输入输出流

为什么不直接用printf和scanf?

不能输入/输出C++新增的内容

std

C++的一些标识符,都是定义在std这个名字空间下面

cout

是什么?

1.是一个ostream对象
output stream:输出流
使用
<<:输出流运算符
作用:将右边的数据,给左边基本形式:cout << 内容 << '\n';cout << 10 << endl;cout << 1.23 << a << b << "qwe";分成多行:

特点

自动根据输出的内容,判断数据类型

特殊标志

C++ cout格式化输出(输出格式)完全攻略 - C语言中文网

*dec	以十进制形式输出整数	常用
hex		以十六进制形式输出整数
oct		以八进制形式输出整数
setw(w)	指定输出宽度为 w 个字符,或输人字符串时读入 w 个字符
setprecision(n)	设置输出浮点数的精度为 n。
showbase	输出表示数值的进制的前缀
输出地址
输出char *,cout会当成字符串进行输出1. cout << &str << endl;
2. cout << (int *)str << endl;

cin

是什么?

1.是一个istream对象
input stream:输入流>>: 输入流运算符
作用:将左边的数据,给右边cin >> a;
特点

1.自动判断数据类型

2.类型不匹配,输入不成功

3.默认的间隔符:空格,TAB,回车。cin不能直接获取

特殊用法

scanf也可以获取空格

get(buf, 100, '\n')
不传结束符,默认是\n
在输入结束后,不会丢弃结束符---------------------------------
getline和get用法是一样的
在输入结束后,丢弃结束符

cin.get获取空格
在这里插入图片描述

定义一个学生结构体,学生信息的数据类型
(struct)是一种用户自定义的数据类型
struct student
{int id;char name[20];int socre;
};
封装函数,实现打印学生信息,根据学生成绩排序
#include <iostream>using namespace std;
const int n = 3;/*
void fun()
{cout << "请输入整数:";int a = 0;cin >> a;cout << "a:" << a << endl;
}
void fun1()
{cout << "请输入一个字符串:";char str[100] = "";//cin.get(str,100,'\n');cin.get(str,100);cout << str;
}
*/
typedef struct student
{int id;char name[20];int score;
}stu;void show_stu(stu *arr)
{for(int i=0;i<n;i++){cout << "id:" << arr[i].id << "\t"<< "name" << arr[i].name << "\t"<<  arr[i].score << endl;}
}void stu_sort(stu *arr)
{int i, j;stu temp;for(i=0;i<n-1;i++)//外循环{for(j=0;j<n-i-1;j++)//内循环{if(arr[j].score>arr[j+1].score){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}
}int main()
{//fun();//fun1();stu arr[n];for(int i=0;i<n;i++){cout << "请输入id,name,socre :";cin >> arr[i].id >> arr[i].name >> arr[i].score;cout << endl;}show_stu(arr);stu_sort(arr);show_stu(arr);return 0;
}

面向对象

特性

1.抽象

​ 数据抽象:用变量描述事物的属性/状态

​ 代码抽象:用函数描述事物的行为

2.封装

​ 将属性和行为,封装到一起组和成一个整体。共同描述一个事物。

​ 可以用权限进行修饰

3.分类

​ 层层分类,使概念逐渐细化、具体化。

4.继承

​ 子类(派生类)可以继承父类(基类)的属性和方法。

5.多态

​ 一个行为,多种状态。

三大特性

封装
继承
多态

封装

描述一个事物的抽象概念
一种自定义的数据类型
一个概念----------------
类似于是一个结构体类型
表现形式
class 类名
{
public:属性、行为
protected:属性、行为
private:属性、行为
};

对象

类的实例化--------------------
类似于是结构体变量
表现形式
类名 对象名;
访问内容
对象.内容对象指针->内容

权限修饰符

类内访问:在成员函数里面进行访问

类外访问:通过对象/指针,只要不在类内的作用域

public:公有权限

​ 访问,可以在类内访问,也可以在类外访问

​ 继承,可以被继承

protected:保护权限

​ 访问,可以在类内访问,不能在类外访问

​ 继承,可以被继承

private:私有权限

​ 访问,可以在类内访问,不能在类外访问

​ 继承,不能被继承

一般

属性用private/protected修饰
行为用public修饰

C++的结构体

基本上和类没有差别.
构造函数
继承

区别

结构体:

​ 默认是public权限

​ 继承默认是public权限

类:

​ 默认是private权限

​ 继承默认是private权限

$$$构造函数

概念

在对象被创建时,自动调用的函数

特点

1.不能主动调用

2.构造函数和类名必须同名

3.没有返回值,没有数据类型标识

4.如果用户不写,编译器会自动生成。空的无参构造。

分类

无参构造
没有形参的构造函数
有参构造
有形参的构造函数
缺省构造
形参有默认值如果是全缺省构造,形参全有默认值。
不能和无参构造同时存在
$$$拷贝构造
拷贝另一个对象的内容
浅拷贝

是编译器默认提供的拷贝构造函数

按bit位进行拷贝,数值是一模一样的

问题:

​ 1.如果原对象有指针/堆区空间。新的对象和原来的对象指向的空间是一样的。

​ 如果不delete,造成内存泄漏。

​ 如果delete,可能会回收很多次。

深拷贝

就是用户自己写的拷贝构造函数

应该,手动开辟堆区空间/手动指针赋值

移动构造

限制构造

表现形式

0.无参类名 对象名;1.括号类名 对象名();类名 对象名(实参);类名 对象名(对象);	// 拷贝构造2.显示声明类名 对象名 = 类名(实参);3.隐式声明类名 对象名 = {内容};类名 对象名 = 对象;	// 拷贝构造

初始化列表

表现形式
构造函数():属性(形参)
{}
作用

1.对属性进行初始化

2.对基类的构造函数传参

3.对组合类对象构造函数传参

相关文章:

标准输入输出流,面向对象,构造函数

标准输入输出流 为什么不直接用printf和scanf? 不能输入/输出C新增的内容 std C的一些标识符&#xff0c;都是定义在std这个名字空间下面cout 是什么&#xff1f; 1.是一个ostream对象 output stream:输出流使用 <<&#xff1a;输出流运算符 作用&#xff1a;将右边…...

Vue2 中使用 UniApp 时,生命周期钩子函数总结

在 Vue2 中使用 UniApp 时&#xff0c;生命周期钩子函数是一个重要的概念。它允许开发者在特定的时间点运行代码&#xff0c;管理组件的生命周期。以下是 Vue2 中 UniApp 常用的生命周期钩子函数总结&#xff1a; 1. beforeCreate 说明: 组件实例刚被创建&#xff0c;此时数据…...

QEMU源码全解析 —— 内存虚拟化(12)

接前一篇文章:QEMU源码全解析 —— 内存虚拟化(11) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM》源码解析与应用 —— 李强,机械工业出版社 QEMU内存管理模型...

如何将ubuntu下的一个目录,保存目录结构为一个git仓库并上传

目录 1. 初始化本地Git仓库 2. 添加文件到仓库 3. 提交更改 4. 创建并关联远程仓库 5. 推送代码到远程仓库 完整流程总结 要将Ubuntu下的一个目录&#xff08;例如rpc&#xff09;保存为一个Git仓库并上传到远程仓库&#xff0c;您可以遵循以下步骤&#xff1a; 1. 初始…...

深度学习中通道数的理解

目录 一、通道&#xff08;Channels&#xff09;的作用 1. 表示输入数据的多样性 2. 提取多层次特征 3. 信息融合与交互 4. 控制模型的复杂度 5. 支持多任务学习 6. 实际应用中的通道设计 7. 总结 二、案例一 1. 输入图像的通道&#xff08;RGB&#xff09; 2. 输出特…...

2025寒假天梯赛训练5

L1-3 敲笨钟 - 2025寒假天梯赛训练5 思路&#xff1a;一般ex的模拟题&#xff0c;主要是找好空格的位置进行修改替换。 #include <bits/stdc.h> using namespace std; #define int long long #define endl "\n" #define sz(x) (int)x.size() #define e empla…...

PowerBI 矩阵 列标题分组显示(两行列标题)

先看效果 数据表如下&#xff1a; 我们在powerbi里新建一个矩阵&#xff0c;然后如图加入字段&#xff1a; 我们就会得到这样的矩阵&#xff1a; 我们在“可视化”->“列”&#xff0c;上双击&#xff0c;输入空格&#xff0c;就能消除左上角的"类别"两字 同理修…...

服务器部署DeepSeek,通过Ollama+open-webui部署

1. 安装ollama 1.1. linux 安装 Ollama是目前常用的AI模式部署的第三方工具&#xff0c;能一键部署deepSeek Ollama官方网址https://ollama.com/ 选择Download下载对应的服务版本 服务器选择Linux&#xff0c;下面是下载代码 curl -fsSL https://ollama.com/install.…...

PVE 磁盘管理详解:从 Windows 到 Linux 的思维转换(文末附资源)

Proxmox VE&#xff08;PVE&#xff09;是一款基于 Debian Linux 的虚拟化平台&#xff0c;其文件系统管理与 Windows 差异较大&#xff0c;尤其是磁盘和文件夹的设计逻辑。本文将以通俗易懂的方式&#xff0c;详解 PVE 中磁盘管理的核心操作&#xff0c;并对比 Windows 帮助大…...

Ubuntu 连接 air pods

&#xff11;&#xff0e; sudo vim /etc/bluetooth/main.conf , 修改蓝牙模式为blder &#xff12;&#xff0e;sudo /etc/init.d/bluetooth restart, 重启蓝牙&#xff0c;即可连接成功...

【LeetCode Hot100 矩阵】矩阵置零、螺旋矩阵、旋转图像、搜索二维矩阵II

矩阵 1. 矩阵置零&#xff08;Set Matrix Zeroes&#xff09;解题思路步骤&#xff1a; 代码实现 2. 螺旋矩阵&#xff08;Spiral Matrix&#xff09;解题思路具体步骤&#xff1a; 代码实现 3. 旋转矩阵 90 度解决思路代码实现 5. 搜索二维矩阵中的目标值解决思路代码实现 1. …...

民用无人驾驶航空器操控员考试

1. 注册 民用无人驾驶航空器综合管理平台 (caac.gov.cn) 2. 选择 操控员资质 3. 安全操控理论培训 -> 在线视频培训 学习完后选择 【在线考试】 共 50道 单项 选择题&#xff0c;每选项3个&#xff0c;80分及格。 4. 查看 我的合格证 证书有效期2年...

TCP可靠传输的ARQ协议

基本知识 ARQ&#xff08;Automatic Repeat-reQuest&#xff09;协议主要包含&#xff1a;停等ARQ协议、连续ARQ协议&#xff0c;其中连续ARQ协议是为了解决停等ARQ协议信道利用率低的问题&#xff0c;目前传统的连续ARQ协议有回退N帧ARQ协议、选择性重传ARQ协议。 注意&#…...

秋招春招投递记录——2024

公司链接待办截止日期已完成状态携程集团&#xff08;上海&#xff09;https://campus.ctrip.com/campus-recruitment/简历挂微众银行&#xff08;武汉&#xff09;https://campus.webank.com/campus-recruitment/webankhr/测评腾讯云智&#xff08;重庆&#xff09;https://jo…...

前端与后端的对接事宜、注意事项

前端与后端的对接事宜、注意事项 一、对接核心流程(完整生命周期) #mermaid-svg-6yzij6OD8DKqiMLD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6yzij6OD8DKqiMLD .error-icon{fill:#552222;}#mermaid-svg-6yzi…...

002 第一个python程序

编程语言 编程语言可以做的事情&#xff1a; 网站开发、软件 、游戏、APP、 小程序、 爬虫、 数据分析、脚本 第一个python程序 找到IDE图标pycharm 新建项目 选择项目路径 创建目录 新建python文件 输入代码 运行程序查看结果 print 介绍 print : 输出内容…...

频率自适应扩张卷积(FADC)详解及代码复现

背景介绍 在介绍频率自适应扩张卷积(FADC)之前,我们需要了解卷积神经网络(CNN)在处理复杂图像任务时面临的挑战。CNN的成功主要依赖于其多层结构和卷积层的设计,这些设计可以有效地捕捉图像的局部特征。然而,随着网络层数的增加,感受野的大小也随之增加,这可能导致一…...

解锁机器学习核心算法 | 决策树:机器学习中高效分类的利器

引言 前面几篇文章我们学习了机器学习的核心算法线性回归和逻辑回归。这篇文章我们继续学习机器学习的经典算法——决策树&#xff08;Decision Tree&#xff09; 一、决策树算法简介 决策树算法是一种典型的分类方法&#xff0c;也是一种逼近离散函数值的方法。它的核心思想…...

数据结构——顺序表与链表

目录 前言 一线性表 二顺序表 1实现 2相关面试题 2.1移除元素 2.2删除有序数组中的重复项 3.3合并两个有序数组 3问题 三链表 1链表的分类 1.1单向或者双向 1.2带头或者不带头 1.3循环或者非循环 2实现 2.1尾插与头插 2.2尾删与头删 2.3pos前插入节点与删除…...

在 Python 中使用 Ollama API

文章目录 一、环境准备二、使用方法1.简单对话2.流式响应3.结构化输出4.自定义客户端4.1 同步客户端4.2 异步客户端4.3 同步 & 异步客户端不同调用次数耗时对比测试 三、常用的ollama API 接口聊天生成本地模型列表显示模型信息创建模型复制模型删除模型拉取模型推送模型生…...

BGP配置华为——RR反射器配置

实验拓扑 与之前实验同理将loop0作为routerID使用&#xff0c;且R1和R2上用loop1接口用于模拟用户其他网段 实验要求 1&#xff0c;在AS100内运行OSPF协议 2.配置路由反射器&#xff0c;使得从R1进入的数据能够反射到全局网络 3.在R1和R2上分别宣告自己的loop1口网段用于观…...

一.AI大模型开发-初识机器学习

机器学习基本概念 前言 本文主要介绍了深度学习基础&#xff0c;包括机器学习、深度学习的概念&#xff0c;机器学习的两种典型任务分类任务和回归任务&#xff0c;机器学习中的基础名词解释以及模型训练的基本流程等。 一.认识机器学习 1.人工智能和机器学习 人工智能&am…...

力扣做题记录 (二叉树)

二叉树 打算先来了解二叉树基础&#xff0c;都是简单题&#xff0c;目的是熟悉代码格式和解题基础思路。 1、二叉树最大深度 二叉树最大深度 方法一、深度搜索 直接用原函数做递归&#xff0c;比较简单 /*** Definition for a binary tree node.* struct TreeNode {* …...

国内情智机器人:从“通情达理”到温暖陪伴的跨越

近年来,随着人工智能技术的飞速发展,情智机器人(具备情感智能的机器人)逐渐成为国内研究和应用的热点领域。从情感计算的基础研究到人形机器人的实际应用,国内在这一领域取得了显著进展,展现出巨大的发展潜力。情智机器人不仅能够理解人类的情感,还能以温暖的方式提供陪…...

Unity中如何判断URL是否为RTSP或RTMP流

技术背景 如何在Unity中判断一个字符串URL是否是RTSP或RTMP流。首先&#xff0c;RTSP通常以“rtsp://”开头&#xff0c;而RTMP则是“rtmp://”或者有时是“rtmps://”用于安全连接。 接下来&#xff0c;如何在C#中进行字符串的检查。最简单的方法应该是检查URL是否以这些协议…...

前端里的this指向问题

目录 1.代码输出结果 2.代码输出结果 3.代码输出结果 4.代码输出结果 5.代码输出结果 6.代码输出结果 7.代码输出结果 8.代码输出结果 9.代码输出结果 10.代码输出结果 11.代码输出结果 12.代码输出结果 13.代码输出结果 14.代码输出结果 总结 1.代码输出结果 f…...

deepseek与gpt,核心原理对比

DeepSeek与GPT作为AI大模型,在自然语言处理等领域展现出强大的能力,它们的核心原理对比主要体现在模型架构、训练策略、资源效率以及应用场景优化等方面。 一、模型架构 DeepSeek 混合专家(MoE)框架:DeepSeek采用了混合专家框架,其内部包含多个“专家”子模块,每个子模…...

提示工程实现数据质量评估

提示工程实现数据质量评估 我准备先查看数据集的基本信息和内容,从完整性、准确性、一致性等方面评价数据质量,再依据数据规模、质量和潜在价值等因素进行定价。 import pandas as pd# 读取文件 excel_file = pd.ExcelFile(/mnt/a-极速-脑筋-98.xls)# 获取所有表名 sheet_n…...

[NKU]C++基础课(二)--- externC、强制类型转换、类与对象、面向对象程序设计语言、对象创建和使用、类的定义、封装

一、extern "C" &#xff08;没看懂&#xff09; extern "C" 是 C 语言中的一个特性&#xff0c;用于在 C 代码中声明使用 C 语言链接的变量或函数。这样做的目的主要是为了实现 C 代码与 C 代码之间的互操作性。 C 支持函数重载&#xff0c;而 C 不支持&…...

黑马Redis详细笔记(实战篇---短信登录)

目录 一.短信登录 1.1 导入项目 1.2 Session 实现短信登录 1.3 集群的 Session 共享问题 1.4 基于 Redis 实现共享 Session 登录 一.短信登录 1.1 导入项目 数据库准备 -- 创建用户表 CREATE TABLE user (id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,phone …...