c++作用域及命名空间

来源:互联网 发布:新媒体运营网络课程 编辑:程序博客网 时间:2024/04/29 09:04

C++作用域

  1. 什么是作用域
    每一个变量、函数、数组、结构体、类、等实体都有其自己有效的作用范围,这就是变量的作用域。

    在局部变量中,局部变量只在定义的函数范围内有效;即从变量定义开始到函数结束被释放。
int fun(){    int a;   //a的作用域开始    ……    ……}            //a的作用域结束

在全局变量中,全局变量的作用域为从定义变量的位置开始到本源文件结束。
若全局变量与局部变量重名,则在局部变量作用域中优先使用局部变量;
若想在局部变量作用域中使用全局变量需要使用作用域限定符(::)

#include<iostream>using namespace std;int a = 1;                          //全局变量a的作用域开始void fun();int main(){    int a = 2;                     //局部变量a的作用域开始    fun();    cout << a <<endl;       //在局部变量作用域中优先使用局部变量    cout << ::a <<endl;     //限定使用全局变量    return 0;}          //主函数结束局部变量a作用域结束;本源文件结束,全局变量a的作用域结束void fun(){    cout << a <<endl;}

这里写图片描述

C++命名空间简述

  1. 什么是命名空间:

    命名空间是ANSI C++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。

  2. 命名空间的作用

    建立多个相互分割的作用域,把实体进行分隔,以免名字冲突。

  3. 访问作用域内实体

    利用作用域限定符访问作用域内实体;

    表达式:
    命名空间名::命名空间成员名;

#include <iostream> using namespace std;   namespace Bird{    void Show()    {        cout << "Bird" << endl;    }}namespace Person{    void Show()    {        cout << "Person" << endl;    }}int main(){    Bird::Show();    Person::Show();    system("pause");    return 0;}

这里写图片描述

4.标准命名空间std

C++标准库所有标识符都是在一个名为std的命名空间中定义的,或者说标准头文件中函数、类和对象模板是在命名空间std中定义的;

因此为了减少::的使用可以在文件开头加入 using namespace std;