C++其一:命名空间namespace和输入(cin)输出(cout)

目录

一、命名空间namespace

1、作用域限定符"::"

2、命名空间的定义

3、命名空间意义

4、命名空间的使用

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

2)、使用using关键字将命名空间中某个成员引入

3)、使用using namespace把命名空间引入

5、命名空间的嵌套使用

1)、命名空间里面嵌套

2)、相同的命名空间嵌套

6、C++官方库命名空间std

二、C++输入和输出

1、认识输入输出

2、使用输入输出


一、命名空间namespace

由于C++大量存在的标识符(变量、函数和类的名称),并且这些标识符处于全局作用域中,为避免命名冲突或命名污染namespace对这些标识符的名称进行了本地化,使编译器在全局作用域中不直接检索到这些标识符。

1、作用域限定符"::"

#include <stdio.h>
int a = 2;//全局变量

int main() {
    int a = 1;//局部变量
    printf("a = %d\n", a);
    return 0;
}

在c语言中关于域知识点,在程序中默认查找规则是先局部后全局,以上程序中输出
a = 1,但是我想要输出a匹配最外面的a,怎么做呢?

#include <stdio.h>
int a = 2;//全局变量

int main() {
    int a = 1;//局部变量
    printf("a = %d\n", ::a);
    return 0;
}

这样输出就变成a = 2,因为" ::a"匹配的是int a = 2;"::"是域限定符,"::"前面是限定范围,前面没有限定范围为默认全局,让查找规则变为只在全局中查找。即全局变量int a = 2;

可是全局中没有,不会在找局部的。限定域就只能在这个域中,不会超出,以下图为例。

域限定符"::"只在C++中有,C语言中是没有的;

2、命名空间的定义

关键字:namespace
使用方法:"namespace" + "名字" + "{ }"

使用命名空间的内容:"命名空间名字" + ":: " + "内容名字"

例:

#include <stdio.h>
namespace my {
    //命名空间中可以放变量、函数、类型
    int a = 1, b = 2;

    struct strab {
        int s1;
        int s2;
    };

    int add(int a, int b) {
        return (a + b);
    }
}

int main() {
    my::a = 3;
    printf("%d\n", my::a); //这里会打印命名空间my中a的值
    
    struct my::strab node; //注意类型中命名空间名字放的位置
    node.s1 = 1;
    node.s2 = 2;

    printf("%d\n", my::add(my::a, my::b));//函数也要指定域名
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值