首页 > 其他分享 >2023.03.11.命名空间

2023.03.11.命名空间

时间:2023-03-11 10:55:23浏览次数:35  
标签:11 局部变量 函数 2023.03 namespace 空间 命名 全局变量

c++命名空间 为了区分不同库中相同名称的函数、类、变量等
命名空间的定义使用关键字 namespace,后跟命名空间的名称,如下所示:

namespace namespace_name {
// 代码声明
}
为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称,如下所示:

name::code; // code 可以是变量或函数,前面是命名空间名

可以使用 using 命名空间名字 来使用该命名空间 之后在主函数中的就是该命名空间下的

命名空间的嵌套
namespace A {
// 代码声明
namespace B {
// 代码声明
}
}
如果想使用 B空间
使用如下命令 using namespace A::B;


全局变量:

全局变量(Global variables)是编程术语中的一种,源自于变量之分。(变量分为局部与全局。)
全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。
一个局部变量在被其它对象引用时,会是一个空值。但全局变量却不会出现这种情况。

局部变量:

局部变量(Local variables)指在程序中只在特定过程或函数中可以访问的变量。局部变量又可称之为内部变量
由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。
局部变量是相对于全局变量而言的。


二者区别所在:

作用域不同:
全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等
内存存储方式不同:
全局变量存储在全局数据区中,局部变量存储在栈区
生命期不同:
全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了
使用方式不同:
全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量
(注:局部变量不能赋值为同名全局变量的值。)
当局部变量和全局变量同时存在的时候,优先引用局部变量,而不去引用全局变量。

#include<iostream>//输入输出流,不加  .h
using namespace std;//打开一个std(标准)命名空间

//使用一个命名空间
//1. using namespace 命名空间名,注意和其他命名空间冲突问题
//using namespace ??  ??就是优先使用的作用域
//2.  手动指定命名空间
namespace AA{
    int a=5;
    void show(){
        cout<<"AA.show()"<<endl;
    }
    int c=40;
};
//作用域:成员能使用的一个范围
namespace BB{
    int a=10;
    void show(){
        cout<<"BB.show()"<<endl;
    }
};
namespace CC {
    namespace BB {
        int a = 10;
        void show() {
            cout << "B2.show()" << endl;
        }
    };
};
//int a = 20;//全局变量
using namespace AA;
int main(){
    //int a = 200;
    // ::作用域运算符,::未指定任何作用域代表使用全局作用域
    cout<<a<<endl;//20
    cout<<BB::a<<endl;//10
    cout<<AA::a<<endl;//5
    AA::show();
    BB::show();
    CC::BB::show();
    
    cout << a << endl;
    system("pause");
    return 0;
}

 

标签:11,局部变量,函数,2023.03,namespace,空间,命名,全局变量
From: https://www.cnblogs.com/hualuoyumufeng/p/17205462.html

相关文章

  • 程序设计应用 2023-03-11
     DjangodoessupporttheModel-View-Controller(MVC)architecturalpattern.However,DjangousesaslightlydifferentapproachcalledModel-View-Template(MV......
  • 多媒体技术 2023-03-11
    音频的获取与处理2.1声音的基础知识声音的三个要素是音调、音强和音色。音调是指声音的高低,由频率决定。高频率的声音听起来高,低频率的声音听起来低。音乐中按音阶来表......
  • Linux Kernel 4.8.11版本发布
    在感恩节的周末,Linux Kernel4.8稳定版分支和4.4LTS分支都获得了维护版本更新。今天发布的LinuxKernel4.8.11和此前的4.8.10版本相隔5天时间,根据短日志主要对77......
  • Linux Kernel 4.8.11版本发布
    在感恩节的周末,​​Linux​​ Kernel4.8稳定版分支和4.4LTS分支都获得了维护版本更新。今天发布的LinuxKernel4.8.11和此前的4.8.10版本相隔5天时间,根据短日志主要对77......
  • ES6-ES11 ES10-Symbol.prototype.description
    原视频<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title......
  • ES6-ES11 ES10字符串方法扩展-trimStart-trimEnd
    原视频<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title......
  • ES6-ES11 ES10数组方法扩展-flat与flatMap
    原视频<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title......
  • 修复win11重置网络后有线无线均无法连接网络/没有WiFi图标问题
    win11网络重置,点击立即重置,然后出现了WiFi图标不见了,只剩下蓝牙、飞行模式、节电模式等五个模块。并且在设备管理器-网络适配器中驱动前都是黄色感叹号,双击查看状态为:代码5......
  • P1115 最大子段和
    P1115最大子段和最大子段和题目描述给出一个长度为n的序列a,选出其中连续且非空的一段使得这段和最大。输入格式第一行是一个整数,表示序列的长度n。第二行有n......
  • Ubuntu Win11双系统安装
    1.下载Ubuntu镜像这里推荐下载清华源的Ubuntu镜像,国外官网下载太慢。清华大学开源软件镜像站。进入18.04(推荐)版本,下载ubuntu-18.04.6-desktop-amd64.iso镜像2.制作启动......