【C++学习】:命名空间、输入输出和缺省参数全面解析

个人头像
🎥 屿小夏 : 个人主页
🔥个人专栏 : C++入门到进阶
🌄 莫道桑榆晚,为霞尚满天!

文章目录

  • 📑前言
  • 一. 命名空间
    • 1.1 为什么需要命名空间?
    • 1.2 命名空间的定义
    • 1.3 命名空间特性
    • 1.4 命名空间的三种使用
  • 二. 输入输出
    • 2.1 输出
    • 2.2 输入
    • 2.3 补充
  • 三. 缺省参数
    • 3.1 缺省参数的概念
    • 3.2 全缺省参数
    • 3.3 半缺省参数
    • 3.4 补充细节点
  • 🌤️全篇总结

在这里插入图片描述

📑前言

本文将介绍C++中的命名空间、输入输出操作以及缺省参数的概念和使用方法。通过本文的学习,读者将了解到命名空间的定义、特性和使用方法,以及C++中的输入输出操作和缺省参数的概念及使用方式。

一. 命名空间

1.1 为什么需要命名空间?

在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。因此,c++引入了命名空间,有效的解决这个问题。命名空间的作用是对标识符的名称进行本地化,避免命名的冲突。

1.2 命名空间的定义

语法:使用namespace关键字,后面跟命名空间的名字,然后接一对{},{}中即为命名空间的成员。

namespace yxx
{int a;int b;int Add(int x, int y){return x + y;}namespace yx{int c;int d;int Sub(int a, int b){return a - b;}}
}
namespace yxx
{int num;
}

1.3 命名空间特性

  1. 命名空间中可以定义变量/函数/类型 。
  2. 命名空间可以嵌套 。
  3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
  4. 一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。

1.4 命名空间的三种使用

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

    int main()
    {printf("%d\n", N::a);return 0;
    }
    
  2. 使用using将命名空间中某个成员引入

    using N::b;
    int main()
    {printf("%d\n", N::a);printf("%d\n", b);return 0;
    }
    
  3. 使用using namespace 命名空间名称 引入

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

二. 输入输出

在C语言中我们使用的是printf和scanf来进行输入和输出的操作,c++又是怎么样的呢?

2.1 输出

include<iostream>
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;
int main()
{cout << "Hello world!!!" << endl;return 0;
}
  1. 使用cout标准输出对象(控制台)
  2. 使用endl来输出换行符

2.2 输入

  1. 使用cin对象从标准输入流(通常是键盘)读取数据。
  2. 是流提取运算符
#include <iostream>
using namespace std;
int main()
{int a;double b;char c;
// 可以自动识别变量的类型cin >> a;cin >> b >> c;cout << a <<" "<< b <<" "<< c << endl;return 0;
}

2.3 补充

  1. cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件以及按命名空间使用方法使用std
  2. cout和cin是全局的流对象
  3. C++的输入输出可以自动识别变量类型
  4. cout和cin分别是ostream和istream类型的对象(后续文章会讲解)

三. 缺省参数

3.1 缺省参数的概念

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

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

3.2 全缺省参数

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

3.3 半缺省参数

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

3.4 补充细节点

  1. 半缺省参数必须从右往左依次来给出,不能间隔着给

  2. 缺省参数不能在函数声明和定义中同时出现

    //a.h
    void Func(int a = 10);
    // a.cpp
    void Func(int a = 20)
    {}
    // 如果声明与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该
    用那个缺省值。
    
  3. 缺省值必须是常量或者全局变量

  4. C语言不支持(编译器不支持)

🌤️全篇总结

本文详细介绍了C++中命名空间的定义、特性和使用方法,包括命名空间的定义语法、特性和三种使用方式。此外,还介绍了C++中的输入输出操作,包括使用cout进行标准输出和使用cin进行标准输入。最后,文章还介绍了缺省参数的概念及全缺省参数和半缺省参数的使用方法,以及一些细节点的注意事项。通过本文的学习,读者可以更好地理解和应用C++中的命名空间、输入输出操作和缺省参数。

image-20231229145151002

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

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

相关文章

HackTheBox - Medium - Linux - Encoding

Encoding 前言 经过10个月左右的网安自学&#xff0c;我想说的第一句话无疑是&#xff1a;感谢TryHackMe。当然&#xff0c;后续的HackTheBox&学院、CRTO等等&#xff0c;对我的帮助都很大。 许多师傅们都在年度总结&#xff0c;我也看了大家都收获很多&#xff0c;都很…

k8s基础架构

k8s基础架构 创建pod流程 &#xff08;1&#xff09;用户通过kubectl向api-server发起创建pod请求&#xff1b; &#xff08;2&#xff09;apiserver通过对应的kubeconfig进行认证&#xff0c;认证通过后将yaml中的po信息存到etcd&#xff1b; &#xff08;3&#xff09;Contr…

Android Studio xml布局代码补全功能失效问题

这里写目录标题 前言&#xff1a;问题描述原因分析&#xff1a;解决方案&#xff1a;1.更新 Android Studio 版本2.原版本解决XML补全失效 小结 前言&#xff1a; 在开发过程中&#xff0c;你可能遇到很多奇奇怪怪的问题。Android Studio 编译器出现问题也是常有的事情&#x…

docker 在线安装mysql 8.0.21版本

1、拉取mysql 8.0.21版本镜像 2、查看镜像 docker images 3、在宿主机 /usr/local/mysql 下的 conf 文件夹下&#xff0c;创建 my.cnf 文件&#xff0c;并编辑内容 [mysql] default-character-setutf8 [client] port3306 default-character-setutf8 [mysqld] port3306 se…

红日靶场-3

目录 前言 外网渗透 外网渗透打点 1、arp 2、nmap 3、nikto 4、whatweb 5、gobuster 6、dirsearch CMS 1、主页内容 2、/configuration.php~ 目录 3、/administrator 目录 4、Joomla!_version探测 5、joomlascan python脚本 6、joomscan perl脚本 MySQL 1、远…

JAVA:利用JUnit进行高效的单元测试

1、简述 在软件开发中&#xff0c;单元测试是确保代码质量和可维护性的关键步骤。JUnit作为Java领域最流行的单元测试框架之一&#xff0c;提供了简单而强大的测试工具&#xff0c;可以帮助开发者在项目开发过程中及时发现和修复代码中的问题。本文将介绍JUnit的基本用法以及一…

k8s陈述式资源管理(命令行)

1、资源管理 &#xff08;1&#xff09;陈述式资源管理&#xff08;常用——查、增&#xff09; 使用kubectl工具进行命令行管理 ①特点&#xff1a;对资源的增删查比较方便&#xff0c;对改不友好 ②优点&#xff1a;90%以上的场景都可以满足 ③缺点&#xff1a;命令冗长…

【VTK三维重建-体绘制】第四期 VTK中GPU加速

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ&#xff1a;870202403 前言 上期内容讲到VTK的体绘制技术vtkGPUVolumeRayCastMapper&#xff0c;本文分享VTK中GPU加速的相关内容&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会…

基于简化版python+VGG+MiniGoogLeNet的智能43类交通标志识别—深度学习算法应用(含全部python工程源码)+数据集+模型(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 模型构建1&#xff09;VGG模型简化版2&#xff09;GoogLeNet简化版——MiniGoogLeNet 3. 模型训练及保存 相关其它博客工程源代码下载其它资料下载 前言 本项目专注于解决出国自驾游特定场景下的交…

ES6之Promise的链式调用

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

使用Gitea搭建自己的git远程仓库

Gitea 为什么需要自建仓库 原因只有一个&#xff1a;折腾。其实国内的码云加上github已经足够用了。 官方原话 Gitea 的首要目标是创建一个极易安装&#xff0c;运行非常快速&#xff0c;安装和使用体验良好的自建 Git 服务。我们采用 Go 作为后端语言&#xff0c;这使我们…

关于解决引用第三方依赖突然失效的问题解决办法

目录 背景回顾解决办法结果 背景 出现该问题的背景是这样的。在项目中需要支持加载pdf文档的功能。所以采取了使用第三方PDF库的方法来实现加载pdf文档。集成完后&#xff0c;功能是正常的。后来过了一段时间&#xff0c;发现加载pdf的功能不能正常使用了&#xff0c;加载不出…