【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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3个值得推荐的WPF UI组件库

WPF介绍 WPF 是一个强大的桌面应用程序框架&#xff0c;用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功能&#xff0c;让开发者可以创建出吸引人且交互性强的应用程序。 HandyControl HandyControl是一套WPF控件库&…

图像分割实战-系列教程9:U2NET显著性检测实战1

&#x1f341;&#x1f341;&#x1f341;图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 U2NET显著性检测实战1 1、任务概述

如何本地快速部署Apache服务器并使用内网穿透工具实现公网访问内网服务

文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…

深度学习|2.4 梯度下降

如上图&#xff0c; J ( w , b ) J(w,b) J(w,b)是由w和b两个参数共同控制的损失函数&#xff0c;损失是不好的东西&#xff0c;所以应该求取合适的w和b使得损失最小化。 为了简单考虑&#xff0c;可以先忽略参数b。 斜率可以理解成在朝着x正方向移动单位距离所形成的损失值的变…

【Linux驱动】设备树模型的LED驱动 | 查询方式的按键驱动

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux驱动》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f36e;设备树模型的LED驱动&#x1f369;设备树文件&#x1f369;驱动程序 &#x1…

【数据结构】树的遍历

树的遍历 前序遍历 前序遍历是按照根节点->左子树->右子树的顺序进行遍历 图片来源维基百科深度优先遍历&#xff08;前序遍历&#xff09;: F, B, A, D, C, E, G, I, H. 代码实现 递归 # class TreeNode: # def __init__(self, x): # self.val x # …

[笔记] GICv3/v4 ITS 与 LPI

0. 写在前面 由于移植一个 pcie 设备驱动时&#xff0c;需要处理该 pcie 设备的 msi 中断(message signaled interrup)。 在 ARM 中&#xff0c; ARM 建议 msi 中断实现方式为&#xff1a; pcie 设备往 cpu 的一段特殊内存&#xff08;寄存器&#xff09;写某一个值&#xff0…

浅析xxl-obj分布式任务调度平台RCE漏洞

文章目录 前言本地环境搭建1、初始化数据库2、搭建调度中心3、搭建出执行器 XXL-JOB漏洞1、后台弱口令->RCE2、未授权API->RCE3、默认accessToken4、CVE-2022-361575、SSRF漏洞->RCE 总结 前言 在日常开发中&#xff0c;经常会用定时任务执行某些不紧急又非常重要的事…

c# 捕获全部线程的异常 试验

1.概要 捕获全部线程的异常 试验&#xff0c;最终结果task的异常没有找到捕获方法 2.代码 2.1.试验1 2.1.1 试验结果 2.2 代码 2.2.1主程序代码 using NLog; using System; using System.Threading; using System.Windows.Forms;namespace 异常监控 {static class Program…

【C#】知识点实践序列之Lock简单解决并发引起数据重复问题

欢迎来到《小5讲堂之知识点实践序列》文章&#xff0c;大家好&#xff0c;我是全栈小5。 这是2023年第3篇文章&#xff0c;此篇文章是C#知识点实践序列文章&#xff0c;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 本篇在Lock锁定代码块基…

主浏览器优化之路2——Edge浏览器的卸载与旧版本的重新安装

Edge浏览器的卸载与旧版本的重新安装 引言开整寻找最年轻的她开始卸载原本的Edge工具下载后新版本的安装 结尾 引言 &#xff08;这个前奏有点长&#xff0c;但是其中有一些我的思考顿悟与标题的由来&#xff0c;望耐心&#xff09; 我在思考这个系列的时候 最让我陷入困得是…

python 深度学习 记录遇到的报错问题10

本篇继python 深度学习 解决遇到的报错问题9_module d2l.torch has no attribute train_ch3-CSDN博客 一、CUDA error: no kernel image is available for execution on the device CUDA kernel errors might be asynchronously reported at some other API call,so the stackt…

架构设计的核心:从多个维度理论分析

文章目录 一、如何实现高内聚低耦合的架构1、确定边界2、内聚的分类3、耦合的分类4、如何实现高内聚低耦合&#xff08;1&#xff09;耦合关注点&#xff08;2&#xff09;低耦合原则&#xff08;3&#xff09;高内聚原则 二、如何实现可扩展性的架构1、扩展性&#xff1a;核心…

机器人活动区域 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 现有一个机器人,可放置于 M x N 的网格中任意位置,每个网格包含一个非负整数编号,当相邻网格的数字编号差值的绝对值小于等于 1 时机器人可以在网格间移动。 问题: 求机器人可活动的最大范围对应的网格点数目。 说明: 网格…

G-LAB|2024年1月份最新的开班计划

1&#x1f237;最新的开班计划 &#x1f447;&#x1f447;&#x1f447; 思科华为HCIA、HCIP、红帽RHCE 可预约免费试听

C#/.NET/.NET Core推荐学习书籍(23年12月更新)

前言 古人云&#xff1a;“书中自有黄金屋&#xff0c;书中自有颜如玉”&#xff0c;说明了书籍的重要性。作为程序员&#xff0c;我们需要不断学习以提升自己的核心竞争力。以下是一些优秀的C#/.NET/.NET Core相关学习书籍&#xff0c;值得.NET开发者们学习和专研。书籍已分类…

微服务智慧工地信息化解决方案(IOT云平台源码)

智慧工地是指应用智能技术和互联网手段对施工现场进行管理和监控的一种工地管理模式。它利用传感器、监控摄像头、人工智能、大数据等技术&#xff0c;实现对施工现场的实时监测、数据分析和智能决策&#xff0c;以提高工地的安全性、效率和质量。 智慧工地平台是一种智慧型、系…

Linux 详解:最完整的入门指南

Linux 是当今最流行的操作系统&#xff0c;仅次于 Windows 和 MacOS。这个开源系统是免费的&#xff0c;在可靠性、安全性和灵活性方面有着悠久的历史。 由于Linux存在于许多设备中并带来了许多优势&#xff0c;因此了解它是什么以及它如何影响计算机行业是至关重要的。 本文…

一呼百应API实时获取商品详情的实现

一、引言 随着电子商务的飞速发展&#xff0c;快速准确地获取商品详情变得尤为重要。一呼百应作为一家知名的B2B采购平台&#xff0c;提供了丰富的商品信息和交易数据。通过一呼百应的API接口&#xff0c;开发者可以实时获取商品详情&#xff0c;为业务决策和数据分析提供有力…

D4145 为什么是交流电源插座接地故障中断器的低功率控制器,有什么作用?

D4145 是。 在发生有 害或致命冲击前&#xff0c;这些器件检测是否有危险的接地情况&#xff0c;比如设备( 与 AC 线路反相连接) 与水以及与裸露电线接触。内含一个 26V 齐纳并联稳压 器、 一个运算放大器和一个 SCR 驱动器。 D4145 新增了两个感测变压 器、一个整流桥、一个 S…