C++:什么是:: for?

siv*_*udh 27 c++

如果你转到这篇文章的接受答案

有人可以详细说明他使用的原因:

double temp = ::atof(num.c_str());
Run Code Online (Sandbox Code Playgroud)

而不是简单的

double temp = atof(num.c_str());
Run Code Online (Sandbox Code Playgroud)

此外,当您使用"纯"全局函数时,使用该语法是否是一种好习惯?

Ski*_*ick 38

它说使用全局版本,而不是在本地范围内声明的版本.因此,如果有人atof在你的班级宣布了,那么肯定会使用全球的.

看看这个主题的维基百科:

#include <iostream>

using namespace std;

int n = 12;   // A global variable

int main() {
    int n = 13;   // A local variable
    cout  << ::n << endl;  // Print the global variable: 12
    cout  << n   << endl;  // Print the local variable: 13
}
Run Code Online (Sandbox Code Playgroud)


Jos*_*osh 19

::是范围解析运算符.它在这种情况下使用,作为一元运算符,是为了确保该名称(atof)在全球范围内总是抬头 -这可能是有用的,以防止名称从与查找干扰隐藏.

  • 最热闹的是,这应该是C++的`std :: atof()`;) (2认同)

Nar*_*a N 5

::运算符是作用域解析运算符。

与类说明符(如A :: a)一起使用时,它将访问类A的数据成员a。在没有任何说明符的情况下使用时,它将访问全局变量。

它主要用于以下比赛。

  1. 引用全局变量。
  2. 引用类的静态成员
  3. 为了避免歧义,当一个类继承自多个[非虚拟基]类时。
  4. 使用using指令时,如果基类中的某个函数的名称与派生类的名称相同,但类型不同,则可以在派生类中使用基类的函数。
  5. 要访问在全局范围中定义的函数,请在具有相同签名的函数定义中进行操作,例如double temp = :: atof(num.c_str());
  6. 创建嵌套类的对象。