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::
这是否意味着它可以像Java中的静态方法一样使用?例如,Dog::
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
名称空间内,否则它不会工作。试试看,你会明白的。