C++ 命名空间(namespace)

实现可见性或访问的限制

  • (1)C++

    #include 头文件 + 命名空间

    在该头文件里的、该命名空间下的某某函数,某某类

  • (2)Java

    包机制 + 访问修饰符

重命名命名空间

一般不直接using namespace **;直接将自己暴露给外部,为了避免命名的混淆,还是放在特定的命名空间里。有时一些命名层次较深,我们需要对其进行重命名:

namespace ublas = boost::numeric::ublas;

usage

  • (1)如我们要使用 <functional> 里的,std(标准命名空间)里的 binary_function 类:

    
    #include <functional>
    
    class Distance :public std::binary_function<Record, Record, double>
    {
        ...
    };
  • (2) 命名空间也存在一定的嵌套关系,或层次关系(空间之中又有空间),就像目录结构一样

    
    #include <boost\numeric\ublas\symmeric.hpp>
    
    int main(int, char**)
    {
        boost::numeric::ublas::symmeric_matrix<double> sigma;
                    // 命名空间:boost::numeric::ublas
                    // 文件路径:boost\numeric\ublas
                    // 一一对应
        return 0;
    }

你可能感兴趣的:(C++ 命名空间(namespace))