C++——命名空间、输入、输出

news2024/12/25 1:26:52

在我们接触C++之前,C语言中有时候会有使用全局变量,全局变量在使用过程中可能会发生冲突,这个冲突有时会是我们与库之间的冲突,有时又会是我们自己定义的之间的冲突,那么这时候命名空间的出现将很好的解决这个问题,下面我们来学习一下这个知识点

命名空间我们从这个定义的名字就不难看出,这是将标识符的名称进行本地化,也就是为这些变量建立一个域,来限制其作用的空间,而namespace关键字就是针对这一情况

#include <stdio.h>
#include <stdlib.h>
int rand = 100;

int main()
{
     printf("%d\n", rand);
     return 0;
}
//rand是一个函数,而我们在主函数外又定义了rand变量为100,这时计算机不知道使用哪个

命名空间的定义

        首先使用关键字namespace后面跟命名空间stu,然后跟一对大括号'{ }',而{}中的即为命名空间s的成员,命名空间中可以定义变量、函数、类型;

        同时命名空间也是可以嵌套的

//命名空间内可以定义变量、函数、类型

namespace stu
{
    int a;

    int max(int num1,int num2)
    {
        return num1>num2?num1:num2;
    }
    
    struct student
    {
        char name[6];
        int age;
    }
}

//命名空间可以嵌套定义
namespace my_std
{
    int num3;

    namespace stu
    {
        int a;

        int max(int num1,int num2)
        {
            return num1>num2?num1:num2;
        }
    
        struct student
        {
            char name[6];
            int age;
        }
    }
}

//命名空间是可以存在多个相同名字的命名空间的,编译器最后会合成同一个
namespace s1
{
    int a;
    int b;
}
namespace s1
{
    int c;
    int d;
}

//编译器合成后
namespace s1
{
    int a;
    int b;
    int c;
    int d;
}

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

当我们展开一个命名空间时,也就意味着将该空间内的内容放在了全局中,这也是我们经常见到有些代码一开始就写上using namespace std; 这句意味着将std标准库内的内容展开,我们在使用库里的例如cout时就可以直接使用,否则我们则需要这样写std::cout。当然我们也可以指定展开例如:using std::cout;这样只需要在开头写上后面都可以正常使用。

 输入、输出       

        在C中我们使用scanf()与printf()来实现标准输入输出,在C++中我们使用cin和cout来实现输入输出,例如

#include <iostream>
using namespaced std;
//using std::cin;       只使用标准库中的cin

int main()
{
    int x;
    cin >> x;
    cout << x <<endl;
}

在这里输入和输出“可以自动识别类型”,当然这里自动识别类型是经过重载实现的,这个在后期我们会进行学习。

缺省参数

        首先缺省参数必须是常量或全局变量,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的 形参列表(参数个数、类型、类型顺序)不同,返回值没有要求。

 

 注意半缺省:从右往左缺省参数

                      从左往右传实参

当在传实参的时候不传使用默认参数,当你传参时,则用传过去的参数。

另外函数缺省参数写在声明中。

     

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

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

相关文章

美国访问学者签证怎么样申请成功率高?

近年来&#xff0c;越来越多的人选择申请美国访问学者签证&#xff0c;以便在美国深造、交流学术知识以及拓展国际视野。那么&#xff0c;如何提高申请美国访问学者签证的成功率呢&#xff1f;以下是知识人网小编整理的一些成功申请的建议供您参考。 1.提前准备&#xff1a;提交…

Vue--》打造个性化医疗服务的医院预约系统(五)

今天开始使用 vue3 + ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关…

Javascript进阶[面向对象编程]

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于海外某世界知名高校就读计算机相关专业。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。…

【MySQL】MySQL 数据类型

目录 1. tinyint 类型 2. bit 类型 3. 小数类型 1、float 类型 2、decimal 类型 3. 字符串类型 1、char 类型 2、varchar 类型 4. 日期类型 5. enum和set 1、枚举和集合类型语法 2、枚举和集合类型的查找 6、find_in_set 函数 写在最后&#xff1a; 1. tinyint …

关于Java反射

JAVA反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性&#xff1b;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 要想解…

MyBatis Plus-个人笔记

前言 学习视频 尚硅谷-Mybatis-Plus教程学习主要内容 本文章记录尚硅谷-Mybatis-Plus教程内容&#xff0c;只是作为自己学习笔记&#xff0c;如有侵扰请联系删除 一、MyBatis-Plus简介 1、简介 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#…

BGP基础实验建邻+宣告实验

实验题目如下&#xff1a; 实验拓扑如下&#xff1a; 实验要求如下&#xff1a; 【1】除R5的5.5.5.0环回外&#xff0c;其他所有的环回均可互相访问 实验思路如下&#xff1a; &#xff08;1&#xff09;合理的IP配置 &#xff08;2&#xff09;合理的BGP配置 &#xff08;…

监控Kubernetes Node组件的关键指标

所有的 Kubernetes 组件&#xff0c;都提供了 /metrics 接口用来暴露监控数据&#xff0c;Kube-Proxy 也不例外。通过 ss 或者 netstat 命令可以看到 Kube-Proxy 监听的端口&#xff0c;一个是 10249&#xff0c;用来暴露监控指标&#xff0c;一个是 10256 &#xff0c;作为…

【IC萌新虚拟项目】代码覆盖率收集与反馈

关于整个虚拟项目&#xff0c;请参考&#xff1a; 【IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 实际参与过项目的同学一定对质量活动这四个字深恶痛绝&#xff0c;项目进入质量活动阶段时&#xff0c;意味着RTL的时序和面积功耗等主…

【算法训练营】队列 合集(1)

&#x1f4cd;前言 本篇将学习queue的OJ题并学习queue的基础知识。 &#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&a…

Linux Day07

一、僵死进程 1.1僵死进程产生的原因 子进程先于父进程结束, 而父进程没有获取子进程退出码&#xff0c;释放子进程占用的资源&#xff0c;此时子进程将成为一个僵死进程。 在第一个框这里时父进程子进程都没有结束&#xff0c;显示其pid 父进程是2349&#xff0c;子进程是235…

nnU-Net 终极指南

一、说明 了解最先进的nnU-Net以及如何将其应用于您自己的数据集所需的一切。使用nnU-Net&#xff0c;这是语义图像分割中非常强大的基线。在本指南中&#xff0c;您将&#xff1a; 对nnU-Net的主要贡献进行简要概述。了解如何将 nnU-Net 应用于您自己的数据集。 但是&#xff…

【C++】set 和 map 简单了解使用

文章目录 关联式容器set 和 multisetmap 和 multimap 关联式容器 set 和 multiset map 和 multimap

【福建事业单位-资料分析】04 倍数、特殊增长率

【福建事业单位-资料分析】04 倍数、特殊增长率 一、倍数1.1现期倍数1.2 基期倍数总结 二、特殊增长率2.1 间隔增长率间隔倍数和间隔基期&#xff08;都要先求得间隔增长率r&#xff09; 2.2 年均增长率年均增长率的比较年均增长率计算-居中代入 2.3 混合增长率总结 三、总结 一…

Git入门到精通——保姆级教程(涵盖GitHub、Gitee、GitLab)

文章目录 前言一、Git1.Git-概述1.1.Git-概述-版本控制介绍1.2.Git-概述-分布式版本控制VS集中式版本控制1.3.Git-概述-代码托管中心1.4.Git-概述-安装和客户端的使用 2.Git-命令(常用命令)2.1.Git-命令-设置用户签名2.2.Git-命令-初始化本地库2.3.Git-命令-查看本地库状态2.4.…

goto语句

goto语句也称为无条件转移语句。 goto的语法&#xff1a;goto 语句标号; 语句标号的语法&#xff1a;语句标号: 如果在程序中使用了goto&#xff0c;程序的流程将跳转到语句标号的位置&#xff0c;并执行它后面的代码。 其中语句标号是按标识符规定书写的符号&#xff0c;放…

计算机网络实验2:网络嗅探

文章目录 1. 主要教学内容2. Wireshark介绍3. Wireshark下载4. 使用Wireshark捕获包4.1 选择网卡4.2 停止抓包4.3 保存数据 5. Wireshark的过滤规则6. Wireshark实例 1. 主要教学内容 实验内容&#xff1a;安装、学习使用网络包分析工具Wireshark。所需学时&#xff1a;1。重难…

信息安全:访问控制技术原理与应用.

信息安全&#xff1a;访问控制技术原理与应用. 访问控制是网络信息系统的基本安全机制。访问控制是指对资源对象的访问者授权、控制的方法及运行机制。访问者又称为主体&#xff0c;可以是用户、进程、应用程序等&#xff1b;而资源对象又称为客体&#xff0c;即被访问的对象&…

搞定libstdc++.so.6 version GLIBCXX_3.4.21 not found

一、问题&#xff1a; 今天在安装whisper的时候&#xff0c;突然间报了这样一个错误&#xff1a; OSError: Could not load shared object file: libllvmlite.so Errors were: [OSError("/lib64/libstdc.so.6: version GLIBCXX_3.4.21 not found (required by /opt/con…

【直接收藏】前端 VUE 高阶面试题(一)

1.说说vue动态权限绑定渲染列表&#xff08;权限列表渲染&#xff09; 首先请求服务器,获取当前用户的权限数据,比如请求 this.$http.get("rights/list"); 获取到权限数据之后,在列表中使用v-if v-if-else的组合来展示不同的内容 <template><div><…