【C++】入门基础知识详解(一)

news2025/1/10 23:23:54

目录

一、C++关键字

二、命名空间

  1、命名空间的定义

  2、命名空间的使用

三、C++输入&&输出

四、缺省参数

  1、缺省参数的概念

  2、缺省参数的分类

    2.1 全缺省参数

    2.2 半缺省参数


一、C++关键字

我们在学习C++之前,我相信大家大多数都对C语言多多少少都有所了解,C语言的关键字有32个。而本文中的C++关键字有63个,如下图所示:

二、命名空间

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

  1、命名空间的定义

定义命名空间,需要使用到 namespace 关键字,后面跟命名空间的名字,然后接一对{} 即可,{} 中即为命名空间的成员。

如下所示:

//xx为命名空间的名称
namespace xx
{
    //命名空间中的内容既可以定义变量,也可以定义函数,还可以定义结构体
	int a = 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;
  		}
	}
}

//在同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
//那么下面这个命名空间 xx 会和上面的第一个命名空间 xx 结合在一块
namespace xx
{
 	int Mul(int left, int right)
	{
 		return left * right;
	}
} 

注意: 一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。

  2、命名空间的使用

  命名空间的使用有三种方式:

  (1)加命名空间名称及作用域限定符

namespace N
{
	int a = 10;
}
int main()
{
	printf("%d\n",N::a);
	return 0;
}

  (2)使用using将命名空间中某个成员引入

namespace N
{
	int a = 10;
}
using N::a;
int main()
{
	printf("%d\n",a);
	return 0;
}

  (3)使用using namespace 命名空间名称引入

namespace N
{
	int a = 10;
	int b = 20;
	int Add(int left, int right)
	{
		return left + right;
	}
}
using namespce N;
int main()
{
	printf("%d %d\n", a, b);
	Add(10, 20);
	return 0; 
}

注意: 在使用变量的时候要遵循以下两点:(1)当变量不是放在命名空间时,变量默认在局部和全局找。(2)当变量放在命名空间时,变量默认先去命名空间找,然后再去局部和全局找。

三、C++输入&&输出

#include<iostream>
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

说明:

     (1)使用 cout 标准输出对象(控制台)cin 标准输入对象(键盘)时,必须包含 < iostream > 头文件 以及按命名空间使用方法使用 std 。

     (2) cout 和 cin 是全局的流对象,endl 是特殊的 C++ 符号,表示换行输出,他们都包含在包含 < iostream > 头文件中。

     (3)  << 流插入运算符,       >>流提取运算符

     (4)使用 C++ 输入输出更方便,不需要像 printf/scanf 输入输出时那样,需要手动控制格式。 C++ 的输入输出可以自动识别变量类型。

     (5)实际上 cout 和 cin 分别是 ostream 和 istream 类型的对象,>> 和 << 也涉及运算符重载等知识, 这些知识我们我们后续才会学习,所以我们这里只是简单学习他们的使用。后面我们还有有 一个章节更深入的学习 IO 流用法及原理。

#include <iostream>
using namespace std;
int main()
{
   int a;
   double b;
   char c;
     
   // 可以自动识别变量的类型
   cin >> a;
   cin >> b >> c;
     
   cout << a << endl;
   cout << b << " " << c << endl;

   return 0;
}

 std 命名空间的使用惯例:

std 是 C++ 标准库的命名空间:

  1. 在日常练习中,建议直接 using namespace std 即可,这样就很方便。
  2. using namespace std 展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模大,就很容易出现。所以建议在项目开发中使用,像 std::cout 这样使用时指定命名空间 + using std::cout展开常用的库对象/类型等方式。

四、缺省参数

  1、缺省参数的概念

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

如下所示:

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

  2、缺省参数的分类

    2.1 全缺省参数

void Func(int a = 10, int b = 20, int c = 30)
 {
     cout << "a = " << a <<endl;
     cout << "b = " << b <<endl;
     cout << "c = " << c <<endl;
 }

    2.2 半缺省参数

void Func(int a, int b = 10, int c = 20)
 {
     cout << "a = " << a << endl;
     cout << "b = " << b << endl;
     cout << "c = " << c << endl;
 }

 注意:

  1. 半缺省参数必须从右往左依次来给出,不能间隔着给;
  2. 缺省参数不能在函数声明和定义中同时出现;(我们在声明的时候给缺省参数)
  3. 缺省值必须是常量或者全局变量
  4. C语言不支持(编译器不支持)


本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。

 老铁们,记着点赞加关注!!!   

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

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

相关文章

JMeter之__threadNum妙用:将接口查询结果列表按顺序赋值给各线程

使用JMeter做性能测试会遇到这么一个场景&#xff1a;后面的请求需要根据前面的查询列表结果通过正则表达式提取器取值后赋值&#xff0c;而后面用户的赋值必须是唯一的&#xff0c;此时该如何做&#xff1f; 如果按编程思维来说&#xff0c;这个问题并不难。只需要把前面的结…

Azkaban搭建与使用

下载最新azkaban源文件&#xff1a;https://github.com/azkaban/azkaban/releases 集群模式安装 1.解压 azkaban-db-3.84.4.tar.gz、 azkaban-exec-server-3.84.4.tar.gz 和 azkaban-web-server-3.84.4.tar.gz 到/opt/install/azkaban 目录下 linux>tar -zxvf azkaban-db-3…

算法:静态查找表

查找表&#xff08;Search table&#xff09;是由同一类型的数据元素&#xff08;或记录&#xff09;构成的集合。关键字(key)是数据元素中某个数据项的值&#xff0c;又称为键值&#xff0c;用它可以表示一个数据元素&#xff0c;也可以标识一个记录的数据项&#xff08;字段&…

当深度学习撞上高性能计算,科研仿佛坐上了加速器

今天深度学习无处不在&#xff0c;当你打开移动终端的时候&#xff0c;各种APP会推荐到你喜欢的食物、你喜欢的电影&#xff0c;你关注的新闻热点。在生活中更是改变着我们&#xff0c;今天的智能语音让语言障碍破除&#xff0c;在预测疾病基因大数据领域预测疾病来确定药物治疗…

2023年大学生就业怎么样?双一流高校就业率仅15%,到底是咋了?

2023年&#xff0c;大学毕业生就业状况如何&#xff0c;一直是社会关注的焦点。尤其是中国的双一流高校&#xff0c;以其优越的教学与研究背景和实力&#xff0c;被众多年轻人视为就业的理想选择。 然而&#xff0c;在最新的统计数据中&#xff0c;这些一流高校的就业率却惊人…

欧科云链OKLink全新推出Onchain AML服务 助力新金融合规健康发展

据香港大公报报道&#xff0c;为期两天的全球高端经济峰会2023格林威治经济论坛(GreenwichEconomicForum&#xff0c;下称GEF论坛)于6月15日在香港交易所举办&#xff0c;欧科云链控股有限公司&#xff08;下称“欧科云链”&#xff0c;股票代码&#xff1a;01499.HK&#xff0…

【北邮国院大三下】Logistics and Supply Chain Management 物流与供应链管理 Week4

北邮国院大三电商在读&#xff0c;随课程进行整理知识点。仅整理PPT中相对重要的知识点&#xff0c;内容驳杂并不做期末突击复习用。个人认为相对不重要的细小的知识点不列在其中。如有错误请指出。转载请注明出处&#xff0c;祝您学习愉快。 如需要pdf格式的文件请私信联系或…

VALSE 2023 无锡线下参会个人总结 6月12日-3

VALSE2023 无锡线下参会个人总结 6月12日-3 6月12日会议日程安排Workshop&#xff1a;多模态大模型与提示学习左旺孟&#xff1a;预训练模型和语言增强的零样本视觉学习余宙&#xff1a;知识增强的多模态预训练和提示学习王云鹤&#xff1a;多模态交织&#xff1a;高效模型架构…

STM32中断设置以及中断优先级设置-不含代码例程

本项目使用到的是STM32F030C8型号的MCU&#xff0c;我们可以从官方下载到的标准库文件中的启动汇编文件中&#xff0c;查看到本型号单片机的外部中断向量表。&#xff08;如下图所示&#xff09; 首先&#xff0c;我们了解一下NVIC是什么&#xff0c;在core_cm0.h文件中的标准库…

海川润泽“巧克力”DTU强势来袭

1、设备介绍 “巧克力”DTU(型号&#xff1a;HCRZ-DTU200)&#xff0c;它可以实现远程通信、安全传输等功能&#xff0c;提高了传输的效率和可靠性。采用全新工业级设计&#xff0c;灵活应用于不同场景。此款DTU体积小(76mm31mm21.8mm)、重量轻(150g)&#xff0c;安装简便&…

「任务派发」上线,高效管理跨平台营销任务

作为企业矩阵号相关业务的负责人&#xff0c;您在工作中是否遇到&#xff1a; 下达一个营销任务&#xff0c;需要在几十上百个群里沟通对接&#xff1f;任务发布后&#xff0c;无法掌握各运营者执行情况&#xff1f;账号数据难回收&#xff0c;无法检验任务完成效果&#xff1…

阿里云携手开放原子开源基金会倡议发起云原生工作委员会,两大开源项目达成捐赠意向

6月11日&#xff0c;2023开放原子全球开源峰会正式拉开帷幕。本届峰会以“开源赋能&#xff0c;普惠未来”为主题&#xff0c;设置了开幕式暨高峰论坛、20余场分论坛和开源成果及重点项目展览。在峰会主论坛&#xff0c;开放原子开源基金会理事长孙文龙协各家单位共同倡议发起云…

抖音加码自营电商,拿什么做出差异化?

今年618期间&#xff0c;抖音电商可谓是花尽了心思。不仅推出了补贴活动&#xff0c;上架了单品超值购、商城频道主题日、搜索彩蛋等玩法&#xff0c;而且在售后方面&#xff0c;还推出了“安心购”服务&#xff0c;可提供“七天无理由退货”“极速退款”“运费险”“过敏包退”…

关于QTreeView使用自定义Tree Model时,插入子项目时,扩展箭头不显示的问题

在使用自定义的TreeModel显示数据时&#xff0c;添加子项目后&#xff0c;扩展箭头不显示&#xff0c;但是点击原来扩展箭头在的地方时&#xff0c;树仍能够展开添加的子项目。 经过研究发现&#xff0c;QTreeView有以下代码&#xff1a; 说明如果调用的beginInserRows中的par…

Apikit 自学日记: 如何创建/生成 API 文档

在 API 研发管理产品中&#xff0c;几乎所有的协作工作都是围绕着 API 文档进行的。 我们在接触了大量的客户后发现&#xff0c;采用 文档驱动 的协作模式会比先开发、后维护文档的方式更好&#xff0c;团队协作效率和产品质量都能得到提高。因此我们建议您尝试基于文档来进行工…

vite预渲染 vite-plugin-prerender 大坑记录

本文部分配置转自&#xff1a;vite预渲染怎么实现_猿耳盗铃的博客-CSDN博客 懒得重新写&#xff0c;贴下版本和自己踩的各种坑吧 以下为版本&#xff0c;本文只给vite vue3的建议&#xff0c;不一定适用&#xff0c;因为正常情况能build成功&#xff0c;我昨天中午之前一直没…

JUC高级-0614

5.LockSupport与线程中断 5.1 线程中断 蚂蚁金服面试题&#xff1a;如何中等一个线程&#xff0c;如何停止一个线程什么是中断机制 首先&#xff1a;一个线程不应该由其他线程来强制中断或停止&#xff0c;而是应该由线程自己自行停止。所以&#xff0c;Thread.stop, Thread.…

不用编程超简单的自动化测试工具:Airtest入门篇教程

目录 一、背景 二、什么是Airtest 三、Airtest下载安装 四、Airtest入门使用教程 4.1 连接设备&#xff1a; 4.2 具体测试场景案例&#xff1a; 五、总结 一、背景 很多刚入行或从其他行业转行做测试的同学&#xff0c;日复一日每天做点工已经点得疲惫和麻木&#xff…

数仓架构“瘦身”,Hologres 5000CU时免费试用

Hologres基于创新的HSAP架构&#xff0c;可以将您原先数仓架构中的OLAP系统&#xff08;Greenplum、Presto、Impala、ClickHouse&#xff09;、KV数据库/Serving系统&#xff08;HBase、Redis&#xff09;统一在一个大数据计算引擎中&#xff0c;并提供快速的离线实时一体化分析…

企业如何搭建公司的宿舍管理系统?让数字化改变新的管理方式

什么是企业宿舍管理系统 企业宿舍管理系统是一种用于管理企业宿舍的软件。它可以帮助企业更好地管理公司的宿舍&#xff0c;包括员工选房、入住登记、租金管理、公共设施预订等。该系统通常使用计算机和互联网技术&#xff0c;以便更高效地处理和记录与宿舍相关的活动和任务。…