【C++】入门基础(一)

目录

一.命名空间:namespace

1.namespace的价值

2.namespace的定义

3.namespace的使用方法

3.1 域解析运算符::

3.2 using展开

3.3 using+域解析运算符

二.输入输出

三.缺省参数

四.函数重载

1.参数类型不同

2.参数个数不同

3.参数顺序不同


一.命名空间:namespace

1.namespace的价值

在C/C++中,存在大量变量、函数,它们的名称都存在在全局作用域中,可能会导致很多冲突。使用命名空间的目的就是对标识符的名称进行本地化,避免命名的冲突。

2.namespace的定义

使用namespace关键字定义一个域,这个域跟全局域各自独立,不同的域中可以定义相同名字的变量,这就避免的命名的冲突。其中C++标准库都放在一个叫std(standard)的命名空间中。例如以下代码:同一个名的变量rand在不同域中表现不同的内容

TIPs:cout<<  <<endl相当于C语言中的printf(" \n");

#include<iostream>
#include<stdlib.h>
using namespace std;namespace zyh
{int rand = 10;
}int main()
{//默认是std::rand//标准库中rand是一个地址cout << rand << endl;//命名空间zyh中rand是一个Int变量cout << zyh::rand << endl;return 0;
}

 ​​​​

C++中域有局部域,全局域,命名空间域,类域;局部域、全局域会影响编译查找逻辑和变量的生命周期,但命名空间域和类域不会影响变量的生命周期。

namespce只能定义在全局中,并且支持嵌套定义。项目工程文件中多文件中定义的同名namespace会被认为是一个namespace,自动合并到一起。

//嵌套定义
namespace zyh
{int rand = 10;namespace zyh2{int rand = 20;}
}

3.namespace的使用方法

3.1 域解析运算符::

在变量名前加上(命名空间名) + :: (域解析运算符)就可以访问指定命名空间域中的变量了,例如:

namespace zyh
{int a = 10;int b = 20;
}int main()
{//访问命名空间域zyh中的a和bcout<<zyh::a<<endl;cout<<zyh::b<<endl;return 0;
}

3.2 using展开

using + (命名空间名);直接将命名空间内的所有成员全部展开,也就是说展开后无需加域解析运算符就可访问,但这种方式风险极大,不推荐在项目中使用,例如:

namespace zyh
{int a = 10;int b = 20;
}//直接使用using展开命名空间zyh
using namespce zyh;
int main()
{/展开后就能直接访问命名空间域zyh中的a和bcout<<a<<endl;cout<<b<<endl;return 0;
}

3.3 using+域解析运算符

这就是前两者的结合版,将命名空间域中的某个成员进行展开使用,这种方式是比较合理的,也经常使用到,例如cout和endl是std命名空间中的输出和换行,由于经常要用到,因此可以在程序最开头直接将这两个成员进行展开,此后方便使用。

using std::cout;
using std::endl;int main()
{int a = 10;cout<<a<<endl;
}

二.输入输出

C++的输入输出相较于C语言就舒服多了,C++不需要自己手动输入格式,它能自动识别变量的类型(本质是通过函数重载实现的)并进行输入输出。

  1. <iostream>是input,output stream的缩写,是标准输入、输出流库,定义了标准的输入、输出对象
  2. std::cin相当于scanf,配合流插入运算符>>,实现数据的输入
  3. std::cout相当于printf,配合流输出运算符<<,实现数据的输出
  4. std:endl相当于换行(此时可以这么理解)
using std::cout;
using std::endl;
using std::cin;
int main()
{int a;double b;char c;//不同类型的abc,cin和cout都能自动识别处理cin >> a;cin >> b;cin >> c;cout << a << "/" << b << "/" << c << endl;return 0;
}

三.缺省参数

有些地方缺省参数也叫做默认参数,它是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定的实参,则采用该形参的缺省值,否则就使用指定的实参。

全缺省就是全部形参都给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值。原因很好理解,就是为了防止歧义,例如4个参数中只有第一个和最后一个有缺省值,那么若给的实参有3个,应该如何分配?为了应对这些情况,C++特意做出的规定。

函数声明和定义分离的时候,缺省参数不能在函数声明和定义中同时出现,否则就会出现歧义,规定必须函数声明给缺省值。

//全缺省
void func1(int a = 10, int b = 20, int c = 30)
{cout << a << "/" << b << "/" << c << endl;
}//半缺省
void func2(int a, int b = 0, int c = 0)
{cout << a << "/" << b << "/" << c << endl;
}int main()
{func1();func1(666);func1(1, 2, 3);func2(6);func2(6, 7, 8);return 0;
}

四.函数重载

C++支持在同一作用域下出现相同的函数名,区别在于这些同名函数的形参不同,这个不同,可以是参数个数,参数类型,或参数顺序。C语言是不支持同一作用域中出现同名函数的,这一改动就是为了方便使用,更加灵活。

1.参数类型不同

int Add(int a, int b)
{return a + b;
}double Add(double a, double b)
{return a + b;
}int main()
{cout << Add(3, 4) << endl;cout << Add(1.1, 2.2) << endl;return 0;
}

2.参数个数不同

int Add(int a, int b)
{return a + b;
}int Add(int a, int b, int c)
{return a + b + c;
}

3.参数顺序不同

实际上也就是参数类型不同

void f(int a, double b)
{cout << "f1" << endl;
}void f(double b, int a)
{cout << "f2" << endl;
}int main()
{f(1, 1.2);f(2.2, 4);return 0;
}

注意:返回值不能最为函数重载的条件,因为调用函数的时候无法区分,因此只能将参数的区别作为函数重载的依据 

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

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

相关文章

开源项目的认识理解

目录 开源项目有哪些机遇与挑战&#xff1f; 1.开源项目的发展趋势 2.开源的经验分享&#xff08;向大佬请教与上网查询&#xff09; 3.开源项目的挑战 开源项目有哪些机遇与挑战&#xff1f; 1.开源项目的发展趋势 1. 持续增长与普及 - 开源项目将继续增长&#xff0c…

从小主机到第一台自组装NAS:升级与优化记录

目录 前言硬件系统安装的波折过程问题解决系统安装 套件/dockerjellyfin 功耗测试刚安装好系统插上缓存盘且运行了更多的套件和 docker 容器之后 温度场景一场景二场景三 后记参考 在使用了一年的小主机 NAS 后&#xff0c;我决定自己组装并安装新 NAS。本文详细记录了硬件选择…

烟雾自动监测报警摄像机

当今社会&#xff0c;安全意识日益增强&#xff0c;各种智能监测技术也在不断创新发展。烟雾自动监测报警摄像机作为其中的一种重要应用&#xff0c;正在为人们的生活和财产安全提供更加全面的保护。烟雾自动监测报警摄像机集成了先进的传感器技术和智能算法&#xff0c;能够高…

图像搜索技术在司法证据分析中的应用:思通数科大模型的创新实践

引言 在司法侦查过程中&#xff0c;图像和视频证据的分析对于案件的侦破至关重要。随着人工智能技术的快速发展&#xff0c;图像搜索技术已成为司法领域的关键工具。本文将探讨如何结合思通数科的大模型&#xff0c;利用图像搜索技术对案件中的图片或视频证据进行深度分析&…

同时用到,网页,java程序,数据库的web小应用

具体实现功能&#xff1a;通过网页传输添加用户的请求&#xff0c;需要通过JDBC来向 MySql 添加一个用户数据 第一步&#xff0c;部署所有需要用到的工具 IDEA(2021.1),Tomcat(9),谷歌浏览器&#xff0c;MySql,jdk(17) 第二步&#xff0c;创建java项目&#xff0c;提前部署数…

ADC 性能规格-静态性能- (2) - 偏移误差( offset error)和满标度增益误差(full scale gain error)

偏移误差(Offset error) 失调(Offset) 定义:失调是指ADC输出数字代码中零位与实际模拟输入零位之间的差异。简单来说,就是当输入信号为零时,ADC输出的数字代码并不一定是零,这个偏差就是失调。影响:失调会影响ADC的整体精度,因为它在整个输入范围内引入了一个固定的偏…

智慧水利引领行业转型:探讨智慧水利解决方案在水务管理、灾害预警及水资源保护中的前沿应用与挑战

本文关键词&#xff1a;智慧水利、智慧水利工程、智慧水利发展前景、智慧水利技术、智慧水利信息化系统、智慧水利解决方案、数字水利和智慧水利、数字水利工程、数字水利建设、数字水利概念、人水和协、智慧水库、智慧水库管理平台、智慧水库建设方案、智慧水库解决方案、智慧…

ExcelToDB2:批量导入Excel到IBM DB2数据库的自动化工具

ExcelToDB2&#xff1a;批量导入Excel到IBM DB2数据库的自动化工具 简介 ExcelToDB2是一个可以批量导入Excel到IBM DB2数据库的自动化工具。支持将xls/xlsx/xlsm/xlsb/csv/txt/xml格式的Excel文件导入到IBM DB2等多种原生及国产数据库。自动化是其最大的特点&#xff0c;因为它…

MVPT: Multitask Vision-Language Prompt Tuning

摘要 提示调整(Prompt Tuning)是一种针对特定任务的学习提示向量的调节&#xff0c;已成为一种数据高效和参数高效的方法&#xff0c;用于使大型预训练的视觉语言模型适应多个下游任务。然而&#xff0c;现有的方法通常是从头开始独立地学习每个任务的提示向量&#xff0c;从而…

docker-compose安装PolarDB-PG数据库

文章目录 一. Mac1.1 docker-compose.yaml1.2 部署1.3 卸载4. 连接 二. Win102.1 docker-compose.yaml2.2 部署2.3 卸载 参考官方文档 基于单机文件系统部署 一. Mac 1.1 docker-compose.yaml mkdir -p /Users/wanfei/docker-compose/polardb-pg && cd /Users/wanfei…

开放式耳机哪款性价比高?这五款超值精品不容错过

喜欢进行户外运动的小伙伴们&#xff0c;应该都很需要一款既可以匹配运动场景&#xff0c;又兼顾音质体验的无线蓝牙耳机吧。而开放式耳机拥有佩戴舒适牢固&#xff0c;不堵塞耳部&#xff0c;不影响外部声音传入耳部的优点&#xff0c;完全可以成为运动健身人士户外运动的好伴…

【JavaScript 算法】深度优先搜索:探索所有可能的路径

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、算法原理二、算法实现三、应用场景四、优化与扩展五、总结 深度优先搜索&#xff08;Depth-First Search, DFS&#xff09;是一种用于遍历或搜索图或树数据结构的算法。该算法尽可能深入图的分支&#xff0c;探索所有可…

Qt图片缩放显示

在Qt中&#xff0c;如果你想显示图片的像素或者对图片进行缩放显示&#xff0c;可以使用 QImage 类来处理图片数据&#xff0c;并使用 QLabel 或自定义的 QWidget 来显示图片&#xff0c;但是很难通过鼠标进行缩放显示 QGraphicsView可以实现此功能 在Qt中&#xff0c;QGraphi…

《Windows API每日一练》9.2.1 菜单

■和菜单有关的概念 窗口的菜单栏紧挨着标题栏下面显示。这个菜单栏有时叫作程序的“主菜单”或“顶级菜单“&#xff08;top-level menu&#xff09;。顶级菜单中的菜单项通常会激活下拉菜单&#xff08;drop-downmenu&#xff09;&#xff0c;也 叫“弹出菜单”&#xff08;…

流程图怎么做?有三种制作方法

流程图怎么做&#xff1f;在日常生活和工作中&#xff0c;流程图作为一种直观展示步骤、流程或决策路径的工具&#xff0c;扮演着不可或缺的角色。它不仅能够帮助我们理清思路、规划任务&#xff0c;还能促进团队协作与沟通。那么&#xff0c;如何高效地绘制流程图呢&#xff1…

2024年最新PyCharm保姆级安装教程

PyCharm是一款专为Python开发者设计的集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在帮助用户在使用Python语言开发时提高效率。 PyCharm作为一款强大的Python IDE&#xff0c;其主要作用在于提供了一整套可以帮助Python开发者提高开发效率的工具。这些工具包括但不…

2024 /7/14 H3U与MD600Modbus通讯应用指导

目录 步骤一&#xff1a;硬件接线 步骤二&#xff1a;变频器参数设置 步骤三&#xff1a;软件PLC程序配置 注意事项&#xff1a; 步骤一&#xff1a;硬件接线 PLC侧485端子 MD600变频器侧485端子 …

如何用码上飞解决企微上真实需求来接单赚米

在企微的工作台中有一个「需求模块」&#xff0c;所有的企微用户都可以在上面提出自己的需求。 例如张三说“在企微上我怎么样才可以把一个客户发的语音&#xff0c;转给另一个客户听&#xff1f;” 李四说“我需要一个能每天在工作群里定时发布信息并能自动修改日期的功能。…

HarmonyOS(44) Polyline模拟股票分时走势图

Polyline 前言Polyline初始化坐标集合开启定时器全部源码参考资料 前言 本篇博文使用折线组件Polyline来绘制股票实施走势图&#xff0c;通过本篇博客&#xff0c;你可以了解到State、定时器、Polyline的作用。同时可以加深对自定义组件的生命周期的理解。 Polyline 模拟股票…

Android11 SplashScreen 的显示和退出流程

应用的启动到显示到屏幕是需要一定的时间的&#xff0c;为了提升用户的体验&#xff0c;google加入了启动窗口&#xff0c;也就是SplashScreen SplashScreen显示流程 在应用的启动过程中&#xff0c;会调用到ActivityStarter的startActivityInner方法&#xff0c;具体可参考&a…