C++ 什么';在命名空间块中定义类方法与使用以下方法定义它们之间的区别:

C++ 什么';在命名空间块中定义类方法与使用以下方法定义它们之间的区别:,c++,class,namespaces,C++,Class,Namespaces,例如: // Example.h namespace MyExample { class Example { void Print() const; }; } 这样做的区别是什么: // Example.cpp namespace MyExample { Example::Print() const { ... } } // Example.cpp MyExample::Example::Print()

例如:

// Example.h
namespace MyExample
{
     class Example
     {
         void Print() const;
     };
}
这样做的区别是什么:

// Example.cpp
namespace MyExample
{
    Example::Print() const
    {
        ...
    }
}
// Example.cpp
MyExample::Example::Print() const
{
    ...
}
这样做:

// Example.cpp
namespace MyExample
{
    Example::Print() const
    {
        ...
    }
}
// Example.cpp
MyExample::Example::Print() const
{
    ...
}

两者的优点/缺点是什么?

编译器没有区别

但是,您会注意到,某些IDE在生成代码时更喜欢第二种解决方案(如Eclipse CDT):

  • 读取定义时,可以立即清楚地知道函数位于哪个名称空间中,无需向上滚动文件
  • 它避免了与嵌套名称空间的混淆
  • 它限制了编辑器中代码的嵌套(在解决方案1中,每个名称空间块为其中定义的代码添加一个全新的缩进)
  • 如果在源文件中grep指定名称空间名称,您将更容易找到在其中声明的函数

    • 编译器没有区别

      但是,您会注意到,某些IDE在生成代码时更喜欢第二种解决方案(如Eclipse CDT):

      • 读取定义时,可以立即清楚地知道函数位于哪个名称空间中,无需向上滚动文件
      • 它避免了与嵌套名称空间的混淆
      • 它限制了编辑器中代码的嵌套(在解决方案1中,每个名称空间块为其中定义的代码添加一个全新的缩进)
      • 如果在源文件中grep指定名称空间名称,您将更容易找到在其中声明的函数

        • 编译器没有区别

          但是,您会注意到,某些IDE在生成代码时更喜欢第二种解决方案(如Eclipse CDT):

          • 读取定义时,可以立即清楚地知道函数位于哪个名称空间中,无需向上滚动文件
          • 它避免了与嵌套名称空间的混淆
          • 它限制了编辑器中代码的嵌套(在解决方案1中,每个名称空间块为其中定义的代码添加一个全新的缩进)
          • 如果在源文件中grep指定名称空间名称,您将更容易找到在其中声明的函数

            • 编译器没有区别

              但是,您会注意到,某些IDE在生成代码时更喜欢第二种解决方案(如Eclipse CDT):

              • 读取定义时,可以立即清楚地知道函数位于哪个名称空间中,无需向上滚动文件
              • 它避免了与嵌套名称空间的混淆
              • 它限制了编辑器中代码的嵌套(在解决方案1中,每个名称空间块为其中定义的代码添加一个全新的缩进)
              • 如果在源文件中grep指定名称空间名称,您将更容易找到在其中声明的函数

                • 两者在技术上是相同的。但是,当您在文件中定义了该名称空间的许多函数时,如果您不是特别喜欢使用名称空间名称来限定每个函数,您可以使用前者来避免额外的键入


                  当然,后一种形式对某些人来说可读性更好,而且是主观的。

                  两者在技术上是相同的。但是,当您在文件中定义了该名称空间的许多函数时,如果您不是特别喜欢使用名称空间名称来限定每个函数,您可以使用前者来避免额外的键入


                  当然,后一种形式对某些人来说可读性更好,而且是主观的。

                  两者在技术上是相同的。但是,当您在文件中定义了该名称空间的许多函数时,如果您不是特别喜欢使用名称空间名称来限定每个函数,您可以使用前者来避免额外的键入


                  当然,后一种形式对某些人来说可读性更好,而且是主观的。

                  两者在技术上是相同的。但是,当您在文件中定义了该名称空间的许多函数时,如果您不是特别喜欢使用名称空间名称来限定每个函数,您可以使用前者来避免额外的键入


                  当然,后一种形式对某些人来说可读性更好,而且更具主观性。

                  没有区别,只是后一种形式更详细。没有区别,只是后一种形式更详细。没有区别,只是后一种形式更详细。没有区别,只是后一种形式更详细。没有区别,只是后者要详细得多。