从C到C++,C++入门篇(1)

1.什么是C++

C++是一种通用编程语言,由Bjarne Stroustrup在1980年代初开发,作为C语言的扩展。

C++支持多种编程范式,包括过程式编程、数据抽象、面向对象编程和泛型编程等。

这种语言在操作系统、游戏开发、图形界面、嵌入式系统、分布式系统、网络编程、科学计算等领域都有广泛的应用。

C++的设计提供了比C语言更强的功能,同时保持了C语言的简洁和高效。

2.C++关键字

C语言有32个关键字,而C++有63个关键字。关键字(keyword)属于保留字,是整个语言范围内预先保留的标识符。每个C++关键字都有特殊的含义。

3.命名空间

命名空间是许多编程语言使用的一种代码组织的形式,通过命名空间来分类,区别不同的代码功能,避免不同的代码片段(通常由不同的人协同工作或调用已有的代码片段)同时使用时由于不同代码间变量名相同而造成冲突。

3.1命名空间的定义

  • 使用namespace关键字,后跟命名空间的名字,然后接一对{} 即可,{}中即为命名空间的名字
  • 命名空间中可以定义变量,函数,类型
namespace flower
{int rand = 10;int Add(int left,int right){return left+right;}struct Node{struct Node* next;int val;};
}
  • 命名空间可以嵌套
//命名空间N1嵌套了N2
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;}}
}
  • 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成为同一个命名空间

3.2命名空间的使用

假设我定义了一个命名空间shaoyao 

namespace shaoyao
{int a = 0;int b = 1;int Add(int left,int right){return left+right;}struct Node{struct Node*next;int val;};
}

使用方法如下:

  • 加命名空间名称即作用域限定符,实现指定访问
int main()
{printf(“%d\n,N::a”);return 0;
}
  • 使用using将命名空间中某个成员引入,指定展开某一个
using N::b;
int main()
{printf("%d\n",N::a);printf("%d\n",b);return 0;
}
//适用于b经常使用,a不常使用的情况
  • 使用using namespace将命名空间名称引入 
using namespace N;
int main()
{printf("%d\n",N::a);printf("%d\n",b);Add(10,20);return 0;
}
//但注意,尽可能不要随意展开命名空间,因为同时展开多个命名空间容易出问题

 4.C++的输入和输出

C++虽然也支持printf,scanf等写法,但是C++通常习惯用cin和cout实现输入输出

#include<iostream>
//std是C++标准库的命名空间名,C++将标准库的定义和实现都放在这个命名空间里
using namespece std;
int main()
{cout<<"Hello world!"<<endl;return 0;
}
  •  使用cout标准输出对象(控制台)cin标准输入对象(键盘)时,必须包括<iostream>头文件,并且按照命名空间使用方法使用std
  • cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在<iostream>头文件中
  • <<是流插入运算符,>>是流提取运算符
  • C++的输入输出相比于C语言更加方便,它可以自动识别变量类型
//C++的输入输出可以自动识别变量类型
#include<iostream>
using namespace std;int main()
{int a;double b;char c;cin>>a;cin>>a>>c;cout<<a<<endl;cout<<b<<" "<<c<<endl;return 0;
}

5.缺省参数

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

举例:

void Func(int a= 0)
{cout<<a<<endl;
}int main()
{Func();//没有传参时,使用参数的默认值Func(10);//传参时,使用指定的实参return 0;
}

5.1缺省参数的分类

  • 全缺省参数
//为所有变量指定了默认参数
void Func(int a= 10; int b= 20; int c = 30)
{cout<<"a = "<<a<<endl;cout<<"b = "<<b<<endl;cout<<"c = "<<c<<end;
}
  • 半缺省参数
void Func(int a,int b = 10; int c = 20)
{cout<<"a = "<<a<<endl;cout<<"b = "<<b<<endl;cout<<"c = "<<c<<endl;
}

5.2注意点

  • 半缺省参数必须从右往左依次给出,比如 int a = 10, int b = 30,int c这种写法是不行的,容易产生歧义
  • 缺省参数不能在函数声明和定义中同时出现,因为如果两个位置提供的值不同,那么编译器就无法确定到底该用哪个缺省值
  • 缺省值必须是常量或者全局变量

在下一节中,小编会继续为大家介绍C++入门相关的知识点

点赞+关注+评论,小编将持续产出优质好文!

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

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

相关文章

变压器中的磁化和励磁电流波形

导出变压器中的磁化电流和励磁电流的图形方法具有说明性&#xff0c;因为它们使我们能够同时可视化产生这些波形的元素&#xff0c;例如磁通波形和磁性材料的典型 BH 曲线。 所得波形表明它们不是正弦波&#xff0c;并且对于励磁电流而言&#xff0c;它也不对称。 使用傅里叶…

vue2源码重写数组方法学习

在学习之前&#xff0c;我们需要问一个为什么&#xff0c;为什么vue2 源码要重写数组方法 响应式数据更新&#xff1a;通过重写数组方法&#xff0c;Vue 能够捕获对数组的变更操作&#xff08;如 push、pop、shift 等&#xff09;&#xff0c;并在数据发生变化时自动更新视图&a…

Facebook代运营 | Facebook广告投放步骤及要点

Facebook体量大&#xff0c;素材的更新频率快&#xff0c;通过Facebook进行广告投放的用户也越来越多&#xff0c;Facebook坐拥大量用户&#xff0c;同时有着非常科学的用户画像构建系统和推送机制&#xff0c;对于很多广告涉足的伙伴来说&#xff0c;更加的友好。 1. 创建广告…

Opentracing 代码Demo

背景 OpenTracing 是一个提供标准化分布式追踪功能的API和工具。它的主要作用包括: 跨系统边界追踪请求流程:OpenTracing 允许开发者跟踪一个请求从开始到结束在整个分布式系统中的所有经过的点(包括异构系统),帮助理解系统中的请求流程和服务间的相互依赖。 性能分析和瓶…

ubuntu系统 kubeadm方式搭建k8s集群

服务器环境与要求&#xff1a; 三台服务器 k8s-master01 192.168.26.130 操作系统&#xff1a; Ubuntu20.04 k8s-woker01 192.168.26.140 操作系统&#xff1a; Ubuntu20.04 k8s-woker02 192.168.26.150 操作系统&#xff1a; Ubuntu20.04 最低配置&#xff1a;2…

斯坦福 AI 团队被曝抄袭中国大模型开源成果;Zoom 创始人谈视频会议未来丨 RTE 开发者日报 Vol.218

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

gradio出现httpcore.ReadTimeout: timed out问题

解决办法 pip install https://gradio-builds.s3.amazonaws.com/aae46d9199e1edc8a22c96aba1ade12f6ebc1da1/gradio-4.21.0-py3-none-any.whl

2.29G大小Win 11系统来了,老爷机也能焕发第二春

Win 11 推出近三年以来微软大搞特搞的份额入侵计划&#xff0c;以目前情况来看算是彻底失败了。 国外知名机构 statcounter 最近公布了 4 月份 Windows 各版本份额调查结果。 其中显示&#xff0c;Win 11 占比 26% 左右&#xff0c;相较 2 月份 28% 反而开起了倒滑车。 来源&…

技术管理革新:三品PLM在电子电气行业的应用

随着科技的不断进步和市场需求的日益增长&#xff0c;电子电气行业正经历着前所未有的变革。产品生命周期的缩短和更新换代的加速&#xff0c;对企业的产品研发管理提出了更高的要求。在这样的背景下&#xff0c;产品生命周期管理PLM解决方案应运而生&#xff0c;旨在帮助电子电…

Python工程中,__init__.py文件有什么用

在Python工程中&#xff0c;__init__.py 文件有几个重要的用途&#xff1a; 标识目录为包&#xff1a; 在Python 3.3之前&#xff0c;__init__.py 文件的存在是为了告诉解释器&#xff0c;该目录是一个Python包。这使得包中的模块可以被导入和使用。即使在Python 3.3之后可以没…

隔离变压器的特点与作用

隔离变压器是一种常见的电力变压器&#xff0c;其主要特点和作用如下&#xff1a; 特点&#xff1a; 电气隔离&#xff1a; 隔离变压器的主要特点是将输入端和输出端完全电气隔离&#xff0c;通过磁耦合实现能量传递。这意味着输入端和输出端之间没有直接的电连接&#xff0c…

endswith方法 测试字符串是否以指定的后缀结束

Java String类中的endswith方法 Java String类 endsWith () 方法用于测试字符串是否以指定的后缀结束。 语法 public boolean endsWith (String suffix) 参数 suffix -- 指定的后缀。 返回值 如果参数表示的字符序列是此对象表示的字符序列的后缀&#xff0c;则返回 true&…

基于数据帧进行SQL查询

本教程将通过一个具体的案例来演示如何在Spark SQL中基于数据帧进行SQL查询。我们将从创建临时视图开始&#xff0c;然后使用spark对象执行SQL查询&#xff0c;包括投影、选择、统计和排序等操作。 具体步骤如下&#xff1a; 基于数据帧创建临时视图&#xff1a; 命令格式&…

深度学习笔记:1.anaconda安装

Download Anaconda Distribution | Anaconda 双击安装 设置环境变量 anaconda常用命令大全&#xff08;保姆级别建议收藏)-CSDN博客https://blog.csdn.net/m0_64892604/article/details/128806043?ops_request_misc%257B%2522request%255Fid%2522%253A%252217174671831680018…

This Python interpreter is in a conda environment

今天在查看python版本的时候出现警告 Warning: This Python interpreter is in a conda environment, but the environment has not been activated. Libraries may fail to load. To activate this environment please see https://conda.io/activation 这个警告意味着你…

MySql学习(二)——SQL通用语法之DDL

文章目录 二、SQL2.1 SQL通用语法2.2 SQL分类2.3 DDL2.3.1 DDL——数据库操作2.3.2 DDL——表操作-查询2.3.3 DDL——表操作-创建2.3.4 DDL——表操作-数据类型2.3.5 DDL——表操作-修改2.3.6 DDL——表操作-删除二、SQL 2.1 SQL通用语法 SQL语句可以单行或多行书写,以分号结…

2024年6月4日13:48:07-3.8功能说明1.保存草稿2.支持自定义SKU销售规格3.全网爆款企划支持一键提交

创建产品产品保存草稿、自定义编辑规格功能使用手册 尊敬的淘工厂商家&#xff1a; 淘工厂近两个月收到很多商家对淘工厂发品&#xff08;上品&#xff09;效率提升的改进建议&#xff0c;淘工厂本月将针对产品发布页的发品效率提升上线一系列改进功能&#xff0c;希望能加速…

c#快速获取超大文件夹文件名

c#快速获取超大文件夹文件名 枚举集合速度快&#xff1a;(10万个文件) //by txwtech IEnumerable<string> files2 Directory.EnumerateFiles("d:\aa", "*.xml", SearchOption.TopDirectoryOnly);//过滤指定查询xml文件 慢&#xff1a; var fi…

设计循环队列---力扣622

1、题目 1.1基础设置与讲解 循环队列&#xff0c;即固定长度的队列&#xff0c;可以想象成一个环形队列 就类似于这种队列&#xff0c;队尾指针后会有一个空位&#xff0c;用于控制判断队列为空还是为满&#xff1b; typedef int MyDataType;typedef struct {MyDataType fron…

CTF-Misc学习笔记

这里写目录标题 Misc准备古典密码凯撒密码棋盘密码ADFGX密码培根密码栅栏密码摩斯密码猪圈密码键盘密码QWE编码ook编码BrainFUck密码aaencode密码jsfuckbase全家桶URL编码十六进制二进制 ascii码 2.图片隐写分析LSP 隐写实操图片修改宽高实操 零宽度字符隐写音频隐写分析与实操…