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

【C++】C++入门(上)

前言:

  C++是在C语言的基础上不断添加东西形成的一门语言,在C语言的基础上引入了面向对象的思想。因此C++既是面向对象的语言,也是面向过程的语言。因为C++是以C语言为基础的,所以基本上C++兼容所有的C语言。目前最常用的版本是C++98和C++11这两个版本。
  因为C语言是一个比较早期的语言,在许多方面是存在缺陷的,所以C++在C语言的基础上加了许多东西,比如:命名空间、缺省参数、函数重载、引用、模板等。另外需要知道的一个概念是,语言的更新只能向前兼容,之前存在的东西有缺陷,只能通过打补丁来解决,而不能从根本上去解决问题。因为有可能这一缺陷已经被使用在了项目工程之中,如果改掉就会导致项目工程出现一些难以预料的BUG。

命名空间:

什么是命名空间?为什么要设置一个命名空间?
  变量、函数和类的名称都存在于全局作用域中,在一个大一点的项目中,这些名称就可能会存在冲突。命名空间的存在就是为了解决这一问题。命名空间可以对标识符的名称进行本地化,从而达到避免命名冲突或名字污染的情况。命名空间的关键字是namesapce
  命名空间相当于定义了一个新的作用域,命名空间内的所有内容都局限在该命名空间中。但是命名空间并不影响内容的声明周期。
命名空间的定义:

namespace NS
{// 命名空间中可以定义变量/函数/类型int rand = 10;int Add(int left, int right){return left + right;}struct Node{struct Node* next;int val;};
}
//命名空间可以嵌套
namespace N1
{int a;int b;int Add(int left, int right){return left + right;}namespace N2{int c;int d;int Sub(int left, int right){return left - right;}}
}
//同一个工程中允许存在很多个相同名称的命名空间,编译器最后会合成到同一个命名空间中
namespace N1
{int Mul(int left, int right){return left * right;}
}

命名空间的使用:

namespace use1
{int a = 1;int b = 2;
}
namespace use2
{int c = 3;
}
//使用using将命名空间中某个成员引入
using use1::b;
//使用using namespace 命名空间名称 引入
using namespace use2;
int main()
{//命名空间名称及作用域限定符printf("%d\n", use1::a);printf("%d\n", b);printf("%d\n", c);return 0;
}

在这里插入图片描述

C++的输入输出:

//std是C++标准库的命名空间名,C++标准的定义实现都放在这个命名空间中
//前期学习可以直接将std引入
using namespace std;int main()
{cout << "hello world" << endl;int a;double b;char c;//C++可以自动识别变量的类型cin >> a;cin >> b >> c;cout << a << endl;cout << b << " " << c << endl;return 0;
}

在这里插入图片描述
  使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须要包含头文件以及按命名空间使用方法来使用std;
  cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在头文件中;
  <<是流插入运算符,>>是流提取运算符;
  使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型;
  cout和cin分别是ostream和istream类型的对象,>>和<<也涉及到运算符的重载。

缺省参数:

  缺省参数是声明或定义函数时为函数的参数指定一个缺省值(默认值),在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。

#include <iostream>using namespace std;
//缺省参数不能在函数声明和定义时,同时出现
// 缺省值必须是常量或全局变量
//全缺省参数
void Func(int a = 10, int b = 20, int c = 30)
{cout << a << " ";cout << b << " ";cout << c << endl;
}
//半缺省参数
//半缺省参数必须从右到左依次给出,不能有间隔
void Func1(int a, int b = 20, int c = 30)
{cout << a << " ";cout << b << " ";cout << c << endl;
}int main()
{Func();//缺省参数必须从左到右连续使用,不能出现形如Func(1, , 2)的写法Func(1);Func(1, 2);Func(1, 2, 3);return 0;
}

函数重载:

什么是函数重载?
  C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表不同(参数个数或类型或类型顺序),常用来处理实现功能类似数据类型不同的问题。

#include <iostream>
using namespace std;
//参数类型不同
int Add(int left, int right)
{return left + right;
}
double Add(double left, double right)
{return left + right;
}
//参数个数不同
int Sub(int max, int min)
{return max - min;
}
int Sub(int max, int min1, int min2)
{return max - min1 - min2;
}
//类型顺序不同
void func(char a, int b)
{cout << a << " " << b << endl;
}
void func(int a, char b)
{cout << a << " " << b << endl;
}
int main()
{cout << Add(1, 2) << endl;cout << Add(1.1, 1.2) << endl;cout << Sub(10, 1) << endl;cout << Sub(10, 1, 2) << endl;func('a', 3);func(5, 'b');return 0;
}

为什么C++能识别重载函数,而C语言不行?
  因为C语言编译之后的结果,函数名并没有修饰,我们在代码中写的什么样就是什么样。但是C++的函数名是按照一定规则被修饰了的,不同的编译器在不同的环境中修饰规则也是有区别的,所以C++能识别重载函数,而C语言不能。
  如果两个函数的函数名和参数是一样的,返回值不同,是不能够构成重载的,因为调用时编译器没法区分。

相关文章:

【C++】C++入门(上)

前言&#xff1a; C是在C语言的基础上不断添加东西形成的一门语言&#xff0c;在C语言的基础上引入了面向对象的思想。因此C既是面向对象的语言&#xff0c;也是面向过程的语言。因为C是以C语言为基础的&#xff0c;所以基本上C兼容所有的C语言。目前最常用的版本是C98和C11这两…...

5. Kimball维度建模常用术语及概念(一)

文章目录维度建模过程相关概念1. 收集业务需求与数据实现2. 协作维度建模研讨3. 四步骤维度设计过程4. 业务过程5. 粒度6. 描述环境的维度7. 用于度量的事实8. 维度模型事实表技术术语1. 事实表结构2. 可加、半可加、不可加事实3. 事实表中的空值4. 一致性事实5. 事务事实表6. …...

内核调试之Panic-Oops日志分析

这部分我们接着之前的思考&#xff0c;看看内核异常日志的分析。 1 Panic 调试 2 Oops调试 内核出现Panic或Oops错误&#xff0c;如何分析定位问题原因&#xff1f; 首先&#xff0c;保留现场&#xff0c;如下所示为一次非法虚拟地址访问错误。 EXT4-fs (sdc3): recovery c…...

论文解读 | [AAAI2020] 你所需要的是边界:走向任意形状的文本定位

目录 1、研究背景 2、研究的目的 3、方法论 3.1 Boundary Point Detection Network(BPDN) 3.2 Recognition Network 3.3 Loss Functions 4、实验及结果 论文连接&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/6896 1、研究背景 最近&#xff0c;旨在…...

数据挖掘流程简单示例10min

数据挖掘流程简单示例10min 套路&#xff1a; 准备数据实现算法测试算法 任务1&#xff1a;亲和性分析 如果一个顾客买了商品X&#xff0c;那么他们可能愿意买商品Y衡量方法&#xff1a; 支持度support : 所有买X的人数 置信度confidence : 所有买X和Y的人数所有买X的人数…...

KDJB1200六相继电保护测试仪

一、概述 KDJB1200继电保护测试仪是在参照电力部颁发的《微机型继电保护试验装置技术条件(讨论稿)》的基础上&#xff0c;广泛听取用户意见&#xff0c;总结目前国内同类产品优缺点&#xff0c;充分使用现代新的的微电子技术和器件实现的一种新型小型化微机继电保护测试仪。可…...

从WEB到PWA 开发-发布-安装

见意如题&#xff01;本文主要来说说PWA开发&#xff01;作为一个前端程序员&#xff0c;在没有任何Android/IOS的开发情况下&#xff0c;想想我们有多少种方法来开发一个原生移动应用程序&#xff01;我们可以有非原生、混合开发&#xff0c;PWA等等手段。类似uniapp&#xff…...

FPGA纯vhdl实现MIPI CSI2 RX视频解码输出,OV13850采集,提供工程源码和技术支持

目录1、前言2、Xilinx官方主推的MIPI解码方案3、纯Vhdl方案解码MIPI4、vivado工程介绍5、上板调试验证6、福利&#xff1a;工程代码的获取1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了&#xff0c;MIPI解码难度之高&#xff0c;令无数英雄竞折腰…...

《NFL橄榄球》:卡罗来纳黑豹·橄榄1号位

卡罗来纳黑豹&#xff08;英语&#xff1a;Carolina Panthers&#xff09;是一支位于北卡罗来纳州夏洛特的职业美式橄榄球球队。他们是国家美式橄榄球联合会的南区其中一支球队。他们与杰克逊维尔美洲虎在1995年加入NFL&#xff0c;成为扩充球队。 2018年球队市值为23亿美元&am…...

我说我为什么抽不到SSR,原来是这段代码在作祟...

本文是龚国玮所写&#xff0c;熊哥有所新增修改删减&#xff0c;原文见文末。 我说我为什么抽不到SSR&#xff0c;原来是加权随机算法在作祟 阅读本文需要做好心理准备&#xff0c;建议带着深究到底的决心和毅力进行学习&#xff01; 灵魂拷问 为什么有 50% 的几率获得金币&a…...

MySQL MGR 集群新增节点

前言 服务器规划现状&#xff08;CentOS7.x&#xff09; IP地址主机名部署角色192.168.x.101mysql01mysql192.168.x.102mysql02mysql192.168.x.103mysql03mysql192.168.x.104proxysql01proxysql、keepalived192.168.x.105proxysql02proxysql、keepalived 新增服务器IP&#x…...

【单目标优化算法】蜣螂优化算法(Dung beetle optimizer,DBO)(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

【C++】类和对象入门必知

面向过程和面向对象的初步认识类的引入类的定义类的访问限定符封装类的作用域类的实例化类对象模型this指针C语言和C实现Stack的对比面向过程和面向对象的初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解…...

day38 动态规划 | 509、斐波那契数 70、爬楼梯 746、使用最小花费爬楼梯

题目 509、斐波那契数 斐波那契数&#xff0c;通常用 F(n) 表示&#xff0c;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其…...

2023年备考软考必须知道的6件事

不知不觉&#xff0c;距离2023年上半年软考也只有不到100天的时间了&#xff0c;报名入口也将在3月13日正式开通&#xff0c;你是正在犹豫是否参加考试? 还是已经开始着手准备复习? 关于软考考试你还有哪些疑问? 2023年备考软考必须知道的6件事&#xff0c;建议收藏&#xf…...

GLOG如何控制输出的小数点位数

1 问题 在小白的蹩脚翻译演绎型博文《GLOG从入门到入门》中&#xff0c;有位热心读者提问说&#xff1a;在保存日志时&#xff0c;浮点型变量的小数位数如何设置&#xff1f; 首先感谢这位“嘻嘻哈哈的地球人”赏光阅读了小白这不太通顺的博客文章&#xff0c;并提出了一个很…...

2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A(6)

目录 模块A 基础设施设置与安全加固 一、项目和任务描述&#xff1a; 二、服务器环境说明 三、具体任务&#xff08;每个任务得分以电子答题卡为准&#xff09; A-1任务一&#xff1a;登录安全加固&#xff08;Windows&#xff09; 1.密码策略 a.密码策略必须同时满足大小…...

Safety-Gym环境配置与安

官网&#xff1a; https://github.com/openai/safety-gym https://github.com/openai/safety-starter-agents 一、安装依赖环境配置 建议使用python 3.7及以下环境&#xff0c;因为官方的safety-rl是基于tensorflow1.13.1实现&#xff0c;而tensorflow1.13.1只能支持python…...

3月再不跳槽,就晚了

从时间节点上来看&#xff0c;3月、4月是每年跳槽的黄金季&#xff01; 以 BAT 为代表的互联网大厂&#xff0c;无论是薪资待遇、还是平台和福利&#xff0c;都一直是求职者眼中的香饽饽&#xff0c;“大厂经历” 在国内就业环境中无异于一块金子招牌。在这金三银四的时间里&a…...

HTTP cookie格式与约束

cookie是前端编程当中经常要使用到的概念&#xff0c;我们可以使用cookie利用浏览器来存放用户的状态信息保存用户做了一些什么事情。session是服务器端维护的状态。session又是如何和cookie关联起来。后面介绍cookie和session的使用。Cookie 是什么&#xff1f;RFC6265, HTTP …...

[AI开发工具] Cursor Pro功能扩展技术指南:突破免费版限制的系统方法

[AI开发工具] Cursor Pro功能扩展技术指南&#xff1a;突破免费版限制的系统方法 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve re…...

2026年鱼生专用花生油:哪些品牌值得选?

大家好&#xff0c;今天咱们聊聊一个很有趣的话题——鱼生专用花生油。说到鱼生&#xff0c;大家可能会想到广东、广西地区的美食&#xff0c;尤其是那一道道色香味俱全的鱼生&#xff0c;简直让人垂涎欲滴。但是&#xff0c;鱼生的美味离不开优质的食用油&#xff0c;尤其是花…...

别再只盯着GNSS了!用移远EC20模组实现基站定位的完整配置流程(含免费Token申请)

移远EC20模组基站定位实战&#xff1a;从零配置到室内场景精准落地 在物联网设备定位领域&#xff0c;GNSS卫星定位长期占据主导地位&#xff0c;但鲜为人知的是&#xff0c;像移远EC20这样的LTE模组还隐藏着一个被低估的功能——基站定位。当你的智能水表安装在地下室、共享设…...

如何通过离线语音输入提升Android设备的文字录入效率

如何通过离线语音输入提升Android设备的文字录入效率 【免费下载链接】Sayboard An open-source on-device voice IME (keyboard) for Android using the Vosk library. 项目地址: https://gitcode.com/gh_mirrors/sa/Sayboard 在智能手机普及的今天&#xff0c;文字输…...

Deepfake Offensive Toolkit实战:视频会议系统渗透测试案例

Deepfake Offensive Toolkit实战&#xff1a;视频会议系统渗透测试案例 【免费下载链接】dot The Deepfake Offensive Toolkit 项目地址: https://gitcode.com/gh_mirrors/dot/dot 想要了解如何利用深度伪造技术进行视频会议系统安全测试吗&#xff1f;Deepfake Offensi…...

Opencascade避坑指南:Select()函数7个常见使用误区与调试技巧

Opencascade避坑指南&#xff1a;Select()函数7个常见使用误区与调试技巧 在三维建模和CAD开发领域&#xff0c;Opencascade作为一款强大的开源几何内核&#xff0c;其交互功能一直是开发者关注的焦点。而AIS_InteractiveContext中的Select()函数&#xff0c;作为对象选取的核心…...

自动驾驶中的点云处理:Voxel-based与Pillar-based方法实战对比(附代码示例)

自动驾驶中的点云处理&#xff1a;Voxel-based与Pillar-based方法实战对比&#xff08;附代码示例&#xff09; 在自动驾驶技术快速发展的今天&#xff0c;点云数据处理已成为环境感知系统的核心环节。激光雷达扫描产生的海量三维点云数据&#xff0c;如何被高效、准确地转化为…...

告别设备标识混乱!用uniappx插件Ba-IdCode-U一站式获取OAID/AndroidID/IMEI(附隐私合规指南)

跨平台开发者的设备标识管理实战&#xff1a;从混乱到合规的完整解决方案 每次启动新项目时&#xff0c;开发者们是否总在纠结该用哪种设备标识&#xff1f;OAID、AndroidID还是IMEI&#xff1f;国内厂商的兼容性问题怎么解决&#xff1f;隐私合规的红线又在哪里&#xff1f;本…...

【PAT甲级真题】- PAT Judge (25)

题目来源 PAT Judge (25) 题目描述点击链接自行查看 注意点&#xff1a; 排序&#xff1a;先按总分再按解决题目数再按id 思路简介 思路很简单&#xff0c;直接模拟即可 但是坑倒是很多 主要是要区分编译没过和过了但是得 0 分 方案&#xff1a; 初始化时分数为 -2 编译没…...

Qwen3-0.6B-FP8惊艳效果:Qwen3-0.6B-FP8在中文法律条文理解任务中表现优异

Qwen3-0.6B-FP8惊艳效果&#xff1a;在中文法律条文理解任务中表现优异 最近&#xff0c;我在测试一个非常有意思的模型——Qwen3-0.6B-FP8。你可能听说过各种大模型&#xff0c;但这个模型有点特别&#xff0c;它是个“小个子”&#xff0c;却想在“大任务”上证明自己。我把…...