• c++基础


    ::作用域运算符

    ::双冒号为全局运算符

    #include <iostream>
    using namespace std;
    
    int atk = 200;
    
    void Test()
    {
        int atk = 100;
        cout << "Test内部:" << atk << endl;
        cout << "Test外部:" << ::atk << endl;
    }
    
    int main()
    {
        Test();
        system("Pause");
        return EXIT_SUCCESS;
    }

    结果

    命名空间使用语法

    命名空间只能全局范围内定义

    namespace A{
        int a = 10;
    }
    namespace B{
        int a = 20;
    }
    void test(){
        cout << "A::a : " << A::a << endl;
        cout << "B::a : " << B::a << endl;
    }

    命名空间可嵌套命名空间

    namespace A{
        int a = 10;
        namespace B{
            int a = 20;
        }
    }
    void test(){
        cout << "A::a : " << A::a << endl;
        cout << "A::B::a : " << A::B::a << endl;
    }

    命名空间是开放的,即可以随时把新的成员加入已有的命名空间中

    namespace A{
        int a = 10;
    }
    
    namespace A{
        void func(){
            cout << "hello namespace!" << endl;
        }
    }
    
    void test(){
        cout << "A::a : " << A::a << endl;
        A::func();
    }

    声明和实现可分离

    头文件

    #pragma once
    
    namespace MySpace{
        void func1();
        void func2(int param);
    }

    cpp文件

    void MySpace::func1(){
        cout << "MySpace::func1" << endl;
    }
    void MySpace::func2(int param){
        cout << "MySpace::func2 : " << param << endl;
    }

    无名命名空间名称

    意味着命名空间中的标识符只能在本文件内访问,相当于给这个标识符加上了static,使得其可以作为内部连接

    namespace{
        
        int a = 10;
        void func(){ cout << "hello namespace" << endl; }
    }
    void test(){
        cout << "a : " << a << endl;
        func();
    }

    命名空间别名

    namespace veryLongName{
        
        int a = 10;
        void func(){ cout << "hello namespace" << endl; }
    }
    
    void test(){
        namespace shortName = veryLongName;
        cout << "veryLongName::a : " << shortName::a << endl;
        veryLongName::func();
        shortName::func();
    }
  • 相关阅读:
    [转]Javascript中prototype和constructor详解
    [转]SCIM输入启动遭遇“Failed to load x11 FrontEnd module. ”错误
    [转]搭建高效的symbols服务器
    编译 boost 1.52.0
    opensuse 11.4 安装slickedit 2012 完美支持中文
    【转】MyEclipse 6.5 大提速
    [转]VS2005生成pdb签名的问题
    理解泛型 从需求演变开始
    数学中一个很简单的组合 但用程序如何去实现呢?
    从零开始开发服务器控件
  • 原文地址:https://www.cnblogs.com/yifengs/p/15086322.html
Copyright © 2020-2023  润新知