C++ PP Chapter IX 内存模型和名称空间

本文详细介绍了C++中名称空间的概念及其使用方法,包括名称空间的目的、声明与作用域规则,以及如何通过using声明和编译指令简化名称空间的使用。此外还探讨了名称空间的嵌套与未命名特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.  单独编译涉及工程实践(不易抽象总结)

2.  内存模型设计编译原理。(后续补充)

3.  名称空间 
    目的:解决多个库(空间)里重复的定义

    a.  声明区域        -->可以在其中声明的区域
    b.  潜在作用域      -->从声明点开始到声明区结束

        C++定义了规则,使得每个函数中的局部变量不会
        和另一个函数中声明的局部变量发生冲突

    关键字 namespace 用来创建名称空间

    例如 :    namespace Jack
              {
                double pail;
                void fetch();
              }
              namespace Jill
              {
                int pail;
                double fetch;
              }

    名称空间可以是全局的(即为全局变量和全局函数),也可以是独立的局部名称空间
    可以在文件后部分或者另一个文件中,再次使用名称空间(补充...目的)
              namespace Jack
              {
                void fetch()
                {
                    ...
                }
              }

    访问给定的名称空间里的名称:
    例如:  Jack::pail = 12.1;
           Jack::fetch();

    名称未被修饰,则为未限定的名称,被修饰(Jack::)称为限定的名称

4.  C++提供两种机制来简化对名称空间的使用

    a. using 声明
       在代码块(或全局)中使用后,该名称不必再限定

       例如: 
            ..fun(..)
            {
                using Jill::fetch;
                double fetch; //-->error
                cin>>fetch;
            }

    b.  using 编译指令

        using namespace Jack;
        那么对于代码块(全局)中,Jack中所有的名称都不必再加入限定

5.  名称空间的嵌套

    namespace elements
    {
        namespace fire
        {
            int flame;
            ..
        }
        float water;
    }

    使用方法 using namespace elements::fire

    可以在名称空间内使用 using 编译和声明

6.  未命名的名称空间
    于是只属于该文件内,作用类似内部的静态变量
    static int counts;

    ==

    namespace
    {
        int counts;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值