c++第三节之命名空间

在C语言中,我们学过结构体,枚举,联合,他们其实就是一种命名空间,这些名称声明了一个数据的组织形式,并把他们放在一个独立的空间中。

struct   A  { int  a; float b; char ar[]; };//结构体声明
union   U  {double a;    int  m;};//联合声明
enum   A  {int a;  char  b;};//枚举声明
在一个工程中,结构名和联合名是不允许相同的,但是结构名可以和结构变量相同
eg:  struct   A  { int  a; float b; char ar[]; }  A;
     struct   A  { int  A;  };//错误

在c++中 我们了解到了一种新的命名空间 namespace它允许程序员建造自己的名称空间

namespace NName
{
       int fun(int &);//函数原型说明
       int   stu;       int *  stu;//自定义变量
       class Nname {int fun1 ();  double b;};//类类型声明
        .......
}//***花括号之后不以分号结束***并且其中声明的变量为全局变量,也可以为变量赋合适的初始值
其中这些名称具有隐约名称和全限定名称(在空间外部需要索引全限定名,空间内部直接隐约名即可)
隐约: stu,      b,
全限定:NName::stu,    NName::b,
namespace NName
{
  struct  {long f();long m_1;};//声明类型结构 名为CType
  typedef long type;                //声明一个long的别名type
  type funct (CType&);              //声明一个函数
  long CType::f()                   //成员函数的体内定义
   {   
      return m_1;
   }
   CType* p;                       // 全局指针
   type v;                         //全局变量
   CType o;                        //全局对象
}
NName::type NName::funct(CType& r)//全局函数的体外定义
{
   r.m_1 = 10;
   type n = r.m_1 + 10;
   return n;
}
在主函数中可以这样访问:
NName::p = &NName::o;
NName::v = NName::funct(NName::o);
在学习了using之后这一切变得简单了
使用using namespace NName之后,空间名称NName里的任意名称都可以直接索引,无需空间作用限制符   ::
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值