Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;-具有类的名称空间_C++_Class_Namespaces - Fatal编程技术网

C++ C++;-具有类的名称空间

C++ C++;-具有类的名称空间,c++,class,namespaces,C++,Class,Namespaces,我只需要复习一下这个话题,但我无法在网上找到答案 如果您有一个名为Dog class Dog { public: void Dog::woof() { return; } }; Dog中的每个函数必须以Dog::开头吗?我一直都是这样做的,但我想问的是,有没有任何情况不是这样的?如果我不放Dog::这是否意味着它可以像Java中的静态方法一样使用?例如,Dog.woof()而不是myDogObj.woof() 我们使用::操作符的事实是否意味着

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

如果您有一个名为
Dog

class Dog
{
public:
    void Dog::woof()
    {
        return; 
    }   
};
  • Dog
    中的每个函数必须以
    Dog::
    开头吗?我一直都是这样做的,但我想问的是,有没有任何情况不是这样的?如果我不放
    Dog::
    这是否意味着它可以像Java中的静态方法一样使用?例如,
    Dog.woof()而不是
    myDogObj.woof()

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

  • <> L> >为什么我们把代码>狗::/Cuff>告诉C++它是一个属于<代码>狗>代码的方法,而它在类狗里面的事实本质上已经说明了这一点。这不是多余的吗

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

您是否需要:

class Dog
{
public:
    namespace Park
    {
        namespace Trail
        {
            void Dog::woof()
            {
                return; 
            }       
        }   
    }   
};
狗的每一个功能都必须从狗开始吗?就是这样 我一直都这么做,但我想问一下,在什么情况下 事实并非如此?如果我不放狗::这意味着它可以吗 像Java中的静态方法一样使用?例如:狗吠声;而不是 myDogObj.woof()

在类定义内部,任何方法都不必以
Dog::
开头,只能在类定义外部

我们使用::运算符的事实是否意味着Woof处于 Dog的名称空间,即使Dog不是名称空间?如果是这样的话 没错,这是否意味着类会自动将自己创建为 名称空间

是的,在狗的范围内

为什么我们把狗放在狗身上:告诉C++它是狗的一种方法 而事实上,它是在类内狗本质上说 已经这样了吗?这不是多余的吗


是的,这就是为什么您不这么做。

您可以在
Dog
内部定义一个方法,即使您将它放在
类Dog
的括号范围之外?您在
Dog
之外定义的方法是否必须与
Dog
位于同一
cpp
文件中?@hatefind您可以在Dog内部声明它,并且可以在其他任何地方定义它。不,不是。有没有办法在外部声明和定义,或者只能在外部定义?(我猜是后者)两者都可以。无论是在类声明(通常在头文件中)还是在单独的.CPP文件(类定义)中,最后一个示例都是胡说八道,在类中不能有名称空间。如果我在类中声明
woof
,然后在类外定义它,但我将该函数定义放在名称空间中,该怎么办?例如,
namespace Park{void Dog::woof(){return;}}
除非
Dog
的声明在
Park
名称空间内,否则它不会工作。试试看,你会明白的。