c++ -带有类的命名空间

C++ - Namespaces with Classes

本文关键字:命名空间 c++      更新时间:2023-10-16

我只是需要复习一下这个话题,但是我在网上找不到答案。

如果你有一个叫做Dog的类

class Dog
{
public:
    void Dog::woof()
    {
        return; 
    }   
};
  • Dog内部的每个功能都必须从Dog::开始吗?我一直都是这样做的,但我想问的是,是否存在任何情况,而不是这样?如果我不放Dog::,这是否意味着它可以像Java的静态方法一样使用?例:Dog.woof();代替myDogObj.woof();

  • 我们使用::操作符的事实是否意味着WoofDog的命名空间中,即使Dog不是命名空间?如果这是真的,这是否意味着类也会自动将自己创建为名称空间?

  • 为什么我们把Dog::告诉c++,这是一个属于Dog的方法,而事实上,它在class Dog内部本质上已经声明了?这不是多余的吗?

  • 是否有任何情况下,Dog::woof可以在命名空间或嵌套命名空间内以某种方式声明?例Park::Trail::Dog::woof() { return; }

你会做:

class Dog
{
public:
    namespace Park
    {
        namespace Trail
        {
            void Dog::woof()
            {
                return; 
            }       
        }   
    }   
};

Dog的每个函数都必须以Dog::开头吗?这就是我一直都是这么做的,但我想问的是有没有什么情况事实并非如此?如果我不放狗::是否意味着它可以像Java中的静态方法一样使用?例Dog.woof ();而不是

myDogObj.woof ();

没有方法必须在类定义内以Dog::开头,只有在类定义外。

使用::操作符是否意味着Woof在狗的名字空间,即使狗不是名字空间?如果这是是的,这是否意味着类会自动将自己创建为命名空间?

是的,在Dog的范围内。

为什么我们用Dog::来告诉c++它是一个属于Dog的方法而事实上,它在类Dog中这了吗?这不是多余的吗?