精华内容
下载资源
问答
  • 命名空间的定义

    2017-07-23 18:45:00
    一旦定义了命名空间,它下面的代码就属于这个命名空间了,所以命名空间的定义要在代码的最开始行。 对于同一个包来说,同一个命名空间或者子命名空间的代码没有必要在一个 PHP 文件中定义,子命名空间下的代码是...

    命名空间是一个容器,这个容器主要是为了识别其下的类和函数。一旦定义了命名空间,它下面的代码就属于这个命名空间了,所以命名空间的定义要在代码的最开始行。

    对于同一个包来说,同一个命名空间或者子命名空间的代码没有必要在一个 PHP 文件中定义,子命名空间下的代码是为了完成特定模块的工作,组合起来就是一个包完整的命名空间。

    假如编写的代码没有定义命名空间,那说明它属于全局的命名空间(\ 符号),所以能够直接引用类或者函数(不用添 \ 符号)。

     

    转载于:https://www.cnblogs.com/199123zyc/p/7225647.html

    展开全文
  • 命名空间的定义:由关键字 namespace后边接着命名空间名字,之后接一对花括弧括住的一块声明和定义; //17.2.A.h 头文件定义命名空间 primer_17_2namespace primer_17_2 { //定义成员类A class A { public: int...
    1. 命名空间的定义:由关键字 namespace后边接着命名空间名字,之后接一对花括弧括住的一块声明和定义;
    //17.2.A.h   头文件定义命名空间 primer_17_2
    
    namespace primer_17_2
    {
      //定义成员类A
      class A
      {
        public:
          int getA(); //成员函数,定义在命名空间的定义文件中,并且在命名空间内部定义;
          int getB(); //成员函数,定义在命名空间的定义文件中,但是,它是在命名空间外部定义的,请查看下边的 17.2.A.cpp 定义文件;
          int fun() { return 0; } //成员函数及其实现体,在类内部定义,也就是在命名空间的头文件中定义;
          friend A operator+(const A &lhs, const A &rhs); //将操作符函数声明为友元函数,因为该函数被定义成了非成员函数;
        private:
          int v;
      };
      A operator+(const A &lhs, const A &rhs); //为命名空间primer_17_2声明一个加操作符成员,必须在命名空间头文件以外定义,在命名空间实现文件中定义时:既可以在命名空间内部定义也可以在外部定义,外部定义时必须指定命名空间限定符;在其他文件中定义时:必须指定命名空间限定符,以指明函数属于哪个命名空间;
      char get(); //为命名空间primer_17_2声明一个普通成员,方法同加操作符,本例中,该函数定义在了其他文件中,请看文件:17.2.C.cpp;
      const char ch1 = 'a';   //ok  为命名空间primer_17_2定义一个字符常量并初始化,常量必须设置初始值;
      static char ch2 = 'b';   //ok  为命名空间primer_17_2定义一个静态字符常量,并设置初始值,在使用的程序中可以修改;
      static char ch3;// = 'c';    //ok  为命名空间primer_17_2定义一个字符常量,不设置初始值,在使用的程序中可以修改;
      //static const char ch4;    //error, 常量必须设置初始值;
      static const char ch4 = 'd';    //ok  静态的常量,设置了初始值;
      extern char ch5;    //声明字符变量ch5,在使用的程序中进行定义,如:char primer_17_2::ch5,或 char primer_17_2::ch5 = 'e',必须在extern声明后,再在命名空间实现文件中定义该变量;
      extern int n;    //声明定义方法同上;
    
    } //; 这里不需要以分号结尾

    在花括弧中可以出现 能够全局作用域中出现的任意声明:类,变量(以及他们的初始化),函数(以及他们的定义),模板以及其他的命名空间

    1. 命名空间成员的定义:
      (a) 命名空间中,类的成员函数可以在命名空间的类的内部定义,也可以在命名空间的实现文件中定义;如:上述的类成员函数int getA()在命名空间的实现文件中定义,而成员函数 int fun();则在类内部定义,自动成为内联函数;
      (b) 命名空间的直接成员,必须在头文件声明,在实现文件中定义,如:上述 char get()与 加操作符函数 定义在命名空间的实现文件中;
    //17.2.A.cpp
    
    #include "17.2.A.h"
    namespace primer_17_2
    {
      int A::getA()  //类A的成员函数,在命名空间实现文件中定义,并且在命名空间内部定义;
      {
        return v;
      }
    
      A operator+(const A &lhs, const A &rhs) //命名空间的直接成员函数,在命名空间实现文件中定义,并且在命名空间内部定义;
      {
        A a;
        a.v = lhs.v + rhs.v;
        return a;
      }
    
      /*char get() //注释掉了,为了说明在其他文件中如何定义命名空间的直接成员,查看 17.2.C.cpp
      {
        return 'm';
      }
      */
    
      int n = 0; //注意变量n的定义,首先在头文件中extern声明,然后在命名空间实现文件中进行定义,赋值或不赋值都可以;
      char ch5 = 'e'; //声明与定义方法同上;
     }
    
    int primer_17_2::A::getB() //类A的成员函数,在命名空间实现文件中定义,并且在命名空间外部定义;
    {
      return 100;
    }
    
    char primer_17_2::get(char c)  //命名空间的直接成员函数,在命名空间实现文件中定义,并且在命名空间外部定义;
    {
      return c;
    }
    
    // 17.2.C.cpp,观察primer_17_2 的直接成员 char get();的定义:
    
    #include "17.2.C.h"
    #include "17.2.A.h"
    namespace AA
    {
      int getAA()
      {
        return -1;
      }
    
      //error, primer_17_2的 成员get在这里定义是非法的,这里的作用域属于命名空间AA;
      /*
      char primer_17_2::get()
      {
        return 'z';
      }
      */
    }
    
    //ok,在这里定义必须指定primer_17_2限定符;
    char primer_17_2::get()
    {
      return 'z';
    }
    
    1. 命名空间成员定义总结:
      (a)命名空间直接成员函数:在命名空间头文件以外定义时,既可以在命名空间实现文件中定义,也可以在其他文件中定义:

        (a.1)   在命名空间实现文件定义时:既可以在命名空间内部(花括弧以内)定义也可以在外部(花括弧以外)定义,外部定义时必须指定命名空间限定符;
      
        (a.2)   在其他文件中定义时:必须指定命名空间限定符,以指明函数属于哪个命名空间;
      

    (b)类类型及模板类型:其成员函数可以在类内部定义,也可以在命名空间的实现文件定义,这时可以在内部也可以在外部,在其他文件中定义时须指定命名空间限定符;

    (c)非const以及非static直接变量,必须以extern进行声明,然后在使用该变量的地方进行定义,如上述例子中的变量ch5与n的声明与定义;

    (d)命名空间可以不连续定义,即在多个文件中进行成员的声明和定义,这些成员的声明和定义是累积的,共同组成同一个命名空间;
    4. 命名空间的使用:

    #include <iostream>
    #include "17.2.A.h"
    
    using namespace std;
    using namespace primer_17_2;
    
    int main()
    {
      A a;
      A b;
      A ab = a + b;
      cout << "ab.v:" << ab.getA() << endl;
    
      cout << "primer_17_2::get():" << get() << endl;
      cout << "primer_17_2::ch1:" << ch1 << endl;
    
      ch2 = 'b'; //primer_17_2::ch2
      cout << "primer_17_2::ch2:" << ch2 << endl;
    
      ch3 = 'c';
      cout << "primer_17_2::ch3:" << ch3 << endl;
    
      cout << "primer_17_2::ch4:" << ch4 << endl;
    
      cout << "primer_17_2::ch5:" << ch5 << endl;
    
      cout << "primer_17_2::n:" << n << endl;
      return 0;
    }

    运行结果:
    ab.v:100
    primer_17_2::get():z
    primer_17_2::ch1:a
    primer_17_2::ch2:b
    primer_17_2::ch3:c
    primer_17_2::ch4:d
    primer_17_2::ch5:e
    primer_17_2::n:0

    展开全文
  • 众所周知std是一个命名空间,它里面可以定义一系常量,变量跟函数,最简单的命名空间的定义如下: namespace Output { int i = 10; const int con = 15; void printStr() { printf("hello"); } } using ...

    众所周知std是一个命名空间,它里面可以定义一系常量,变量跟函数,最简单的命名空间的定义如下:

    namespace Output {
    	int i = 10;
    	const int con = 15;
    	void printStr() {
    		printf("hello");
    	}
    }
    using namespace Output;
    

    上面定义了一个Output的命名空间,里面分别有一个常量,变量,函数。如果我们想要使用它们,可以这样

    Output::printStr()
    

    就可以直接调用这个函数了。同理,std::bind()其实也是一个函数,只不过这个函数定义在了一个命名空间里面了。

    展开全文
  • 一.命名空间 在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称...定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名 空间的成员。 ...

    一.命名空间
    在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

    命名空间定义
    定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名
    空间的成员。

    1. 普通的命名空间
      namespace N1 // N1为命名空间的名称
      {
      // 命名空间中的内容,既可以定义变量,也可以定义函数
      int a;
      int Add(int left, int right)
      {
      return left + right;
      }
      }
    2. 命名空间可以嵌套
      namespace N2
      {
      int a;
      int b;
      int Add(int left, int right)

    注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。
    二.命名空间使用
    命名空间中成员该如何使用呢?比如:
    {
    return left + right;
    }

    namespace N3
    {
    int c;
    int d;
    int Sub(int left, int right)
    {
    return left - right;
    }
    }
    }

    1. 同一个工程中允许存在多个相同名称的命名空间
      编译器最后会合成同一个命名空间中。
      namespace N1
      {
      int Mul(int left, int right)
      {
      return left * right;
      }
      }
      namespace N {
      int a = 10;
      int b = 20;
      int Add(int left, int right)
      {
      return left + right;
      }
      int Sub(int left, int right)
      {
      return left - right;
      }
      }
      int main()
      {
      printf("%d\n", a); // 该语句编译出错,无法识别a
      return 0; }

    命名空间的使用有三种方式:
    1.加命名空间名称及作用域限定符
    2.使用using将命名空间中成员引入
    3.使用using namespace 命名空间名称引入

    展开全文
  • php命名空间的定义

    2017-08-13 20:53:24
    正常的实例化对象的类都是基于离他最近的命名空间的这个没毛病吧,假如我在他下面继续命名一个空间创建一个类完后我想实例化上面的命名空间的下面的类有三种办法:1.第一种绝对路径$tp5 = new \tp5\tp5(); 2.use导入...
  • C++命名空间的定义与使用

    千次阅读 2019-09-03 14:44:01
    1、对C++命名空间的理解 以主函数调用cout为例,使用using namespace std的作用是为了调用cout时,区分此处的cout是<iostream>下命名空间std下的cout。具体理解下图辅助。 2、定义命名空间 #include <...
  • 命名空间 可以和操作系统对目录的管理作类比。可以在一个根目录下建立不同的子目录,子文件夹中可以有和别的子文件夹下相同名字的文件。 命名空间可以嵌套 ...命名空间的使用 ...
  • 一个命名空间包含两部分:首先是关键字namespace,随后是命名空间的名字。在命名空间名字后面是一系列由花括号括起来的声明和定义。只要能出现在全局作用域中的声明就能置于命名空间内,主要包括:类、变量(及其...
  • C#环境搭建&helloWord&命名空间&类
  • 小古银的官方网站(完整教程)... 目录 目录 命名空间的简单定义 命名空间里的函数 基础示例 基础讲解 命名空间里的类 基础示例 1 基础示例 2 补充知识(了解即可) 命名空间的简单定义 namespace...
  • 1. 命名空间的定义:由关键字 namespace后边接着命名空间名字,之后接一对花括弧括住的一块声明和定义; //17.2.A.h头文件定义命名空间primer_17_2 //17.2.A.h 头文件定义命名空间 primer_17_2 ...
  • 我们知道,在javascript中通常实例化一个类时...而当我们想开发一个工具库时,就要涉及到模块的概念,模块避免我们的工具库对命名空间的污染。 一、定义一个不可变的类 function Range(from,to){ var props = { ...
  • [thinkPHP5项目实战_02]命名空间的定义

    千次阅读 2017-08-10 10:06:57
    1.命名空间解决的问题 ... 2)为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。...2.命名空间的用法 namespace MyProject ; const CONNECT_OK
  • Javascript 类和命名空间的定义

    千次阅读 2010-05-06 16:14:00
    //1.类function Test(id){ this.id=id; this.method=function() { //代码 };} //可以继续扩展上面方法:Test.prototype.method1=function(){};//调用写好类 var A =
  • js虽说不具有像java等高级语言面向对象特性,也没有像java语言定义命名空间那么容易,但是通过一些技巧完全可以实现js面向对象编程,看起来还算是幽雅,呵呵。为了定义一个js类,我们首先要做就是定义命名空间...
  • 1. 命名空间概念 在 C++ 应用程序中, 您可能会写一个名为 func() 的函数,在另一个可用的库中也存在一个相同的函数 func() 。这样,编译器就无法判断您所使用的是哪一个 func() ...命名空间的定义使用关键字 namespace
  • 定义不受命名空间的约束 宏是在编译前预处理阶段处理的 定义的宏从define到undef或者文件尾有效,所以宏的作用域和它所在的代码块无关。
  • 命名空间定义类型

    千次阅读 2014-06-23 11:32:57
    如果定义的类型要用于其他.NET 语言,应该把它们放在命名空间下,而不是模块中。这是因为模块在被编译成 C# 或其他.NET 语言时,被处理成类,在模块中定义的任何类型都成为这个类型内部类。虽然对于 C# 来说,这并...
  • 3.C++默认命名空间 (1)又叫全局命名空间 (2)默认命名空间引用其他命名空间方法 (3)默认命名空间引用自己的方法 ...1.3.4.2、匿名命名空间的定义和使用 (1)定义 (2)匿名命名空间中引用其他命名空间中的方法 (3
  • php的命名空间的样式跟linux的路径很相似。 我们使用文件的路径作为命名空间。 定义命名空间 MVC\Model\index.php代码 <?php namespace MVC\Model; class Index { public static function test() { echo ...
  • 命名空间

    2020-03-15 16:59:27
    文章目录命名空间基本含义基本用法命名空间的定义命名空间的使用使用作用域解析符号::直接使用使用using指令(using directive)引入命名空间中的成员使用using声明(using declaration)引入命名空间名称空间的要点...
  • 命名空间中函数的定义和调用

    千次阅读 2019-06-29 16:49:07
    发现一个关于命名空间问题:即cpp文件中定义命名空间函数和调用命名空间函数,前者需要加域限定符,而后者则不需要 。 值得一提是,当在 cpp 文件定义头文件中命名空间函数时,因为在定义时加上了...
  • 命名空间类似于目录。  在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用代码如类或函数时碰到两类问题:  用户编写代码与PHP... 名为PHP或php的命名空间,以及以这些名字开头的命名空间(例如PHP

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,943
精华内容 5,977
关键字:

命名空间的定义