我有我要查看的代码,如下所示:
foo::foofa(string n){
loadFoo(fn);
}
foo::foofa 是什么意思?我不太明白 :: 做什么?谢谢。
编辑:另外,还有另一种方法可以在没有 :: 的情况下编写它还是需要它?
::
是用于识别和指定标识符所指上下文的范围运算符。
使用一个非常简单的谷歌搜索,IBM 将其描述为:
::(范围解析)运算符用于限定隐藏名称,以便您仍然可以使用它们。如果命名空间范围或全局范围名称被块或类中同名的显式声明隐藏,则可以使用一元范围运算符。
我不太明白 :: 做什么?
它是范围解析运算符。
如果foo
是一个类(或命名空间),并且foofa
是在该类中声明的东西,那么在该类中您可以将其简单地称为foofa
. 但是在类之外,您需要使用此运算符来指定您的意思是这个特定的foo::foofa
; 在其他类或命名空间中可能还有其他范围。
::
另外,是否有另一种方法可以在没有或是否需要的情况下编写它?
它在类定义之外是必需的。您可以在类中定义函数:
class foo {
void foofa(string n) { // No foo:: needed here
loadFoo(n);
}
};
如果foo
是命名空间,那么您也可以使用它using
来避免需要,::
但这通常是一个坏主意,所以我不会向您展示如何使用。
::
是scope resolution
运算符。引用自范围解析运算符
::(范围解析)运算符用于限定隐藏名称,以便您仍然可以使用它们。如果命名空间范围或全局范围名称被块或类中同名的显式声明隐藏,则可以使用一元范围运算符。
您还可以使用类范围运算符来限定类名或类成员名。如果隐藏了类成员名称,则可以通过使用其类名称和类范围运算符对其进行限定来使用它。
:: 表示范围。所以要么是命名空间,要么是类名。例如,如果您想访问标准(std)命名空间中的排序功能,您将使用
std::sort