c++ -带有类的命名空间
C++ - Namespaces with Classes
我只是需要复习一下这个话题,但是我在网上找不到答案。
如果你有一个叫做Dog
的类
class Dog
{
public:
void Dog::woof()
{
return;
}
};
Dog
内部的每个功能都必须从Dog::
开始吗?我一直都是这样做的,但我想问的是,是否存在任何情况,而不是这样?如果我不放Dog::
,这是否意味着它可以像Java的静态方法一样使用?例:Dog.woof();
代替myDogObj.woof();
我们使用
::
操作符的事实是否意味着Woof
在Dog
的命名空间中,即使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中这了吗?这不是多余的吗?
相关文章:
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- CUDA内核和数学函数的显式命名空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- '使用命名空间{嵌套在另一个命名空间中的某个命名空间}"
- 是否可以将函数导入命名空间,但不能导出它?
- C++ C++类中的命名空间降级
- 如何使用 soong 命名空间来有条件地编译模块
- 使用 Clang++ 有没有办法将文件作为命名空间等包含?
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何通过命名空间调用非静态方法
- 在命名空间名称之前加上 :: 是什么意思?