Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.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++ 为什么是“:”:&引用;在std::cout中使用的运算符,而不是“cout”&引用;操作人员_C++_Std - Fatal编程技术网

C++ 为什么是“:”:&引用;在std::cout中使用的运算符,而不是“cout”&引用;操作人员

C++ 为什么是“:”:&引用;在std::cout中使用的运算符,而不是“cout”&引用;操作人员,c++,std,C++,Std,这是一个相当基本的问题,但我已经被这个问题难住了一段时间 我们到底为什么要写作 int main(){ std::cout << "HelloWorld!"; } 我知道::运算符用于编辑类中的函数,但为什么在本上下文中使用它来调用std类中的函数而不是。运算符?< /p> ,因为 STD < /C>不是对象,而命名空间和::/COD>用于指定上下文或范围,用于解析标识符,C++中的标识符可以是类或命名空间。运算符是成员访问运算符,用于访问对象的成员,而不是类或命名空间范围内

这是一个相当基本的问题,但我已经被这个问题难住了一段时间

我们到底为什么要写作

int main(){
   std::cout << "HelloWorld!";
}

我知道::运算符用于编辑类中的函数,但为什么在本上下文中使用它来调用std类中的函数而不是。运算符?< /p> ,因为<代码> STD < /C>不是对象,而命名空间和::/COD>用于指定上下文或范围,用于解析标识符,C++中的标识符可以是类或命名空间。
运算符是成员访问运算符,用于访问对象的成员,而不是类或命名空间范围内的名称


因此
std::cout
意味着“名称空间
std
中的名称
cout
”,而例如
std::ios_base::binary
是在名称空间
std
中的类
ios_base
范围内定义的常量,
foo.x
是名为
x
的对象的成员变量<代码> fo ./P>< P>因为<代码> STD<代码>不是对象,而是命名空间,而::/Cuff>用于指定上下文或范围来解析标识符,C++中的标识符可以是类或命名空间。
运算符是成员访问运算符,用于访问对象的成员,而不是类或命名空间范围内的名称


因此
std::cout
意味着“名称空间
std
中的名称
cout
”,而例如
std::ios_base::binary
是在名称空间
std
中的类
ios_base
范围内定义的常量,
foo.x
是名为
x
的对象的成员变量
foo

运算符是范围解析运算符。前缀可以是命名空间或类

操作符用于选择对象的成员。前缀是结构、联合或类类型的表达式(通常是该类型对象的名称)

std
是名称空间,而不是类。即使它是一个类,
std::cout
如果
cout
是该类的静态成员,那么它仍然是正确的<只有当
std
是具有名为
cout
的成员的类型的对象时,code>std.cout才是正确的


C++可以定义为在所有这些情况下使用
,但是使用
作为范围解析运算符和
作为成员选择运算符可以使代码更易于阅读,因为它更显式。(还有其他语言同时使用

运算符
是范围解析运算符。前缀可以是命名空间或类

操作符用于选择对象的成员。前缀是结构、联合或类类型的表达式(通常是该类型对象的名称)

std
是名称空间,而不是类。即使它是一个类,
std::cout
如果
cout
是该类的静态成员,那么它仍然是正确的<只有当
std
是具有名为
cout
的成员的类型的对象时,code>std.cout才是正确的


C++可以定义为在所有这些情况下使用
,但是使用
作为范围解析运算符和
作为成员选择运算符可以使代码更易于阅读,因为它更显式。(还有其他语言同时使用

std
不是类。它是名称空间。
仅在左侧有值时使用。它意味着从该值的类中选择一个成员<代码> 和 >:是C++语言的“变体”,没有任何情况,它们都是正确的,并且有不同的含义。但它有助于可读性,因为如果您看到
,您就知道您正在处理对象。
std
不是类。它是名称空间。
仅在左侧有值时使用。它意味着从该值的类中选择一个成员<代码> 和 >:是C++语言的“变体”,没有任何情况,它们都是正确的,并且有不同的含义。但是它有助于可读性,因为如果您看到
,您就知道您正在处理一个对象。
用于访问名称空间中的成员的方式与
用于访问类中的成员的方式相同吗?这是不正确的<代码>:用于类和名称空间。@M.M类可以是作用域解析运算符上下文中的“名称空间”。例如,嵌套类定义位于其封闭类的命名空间中。不,类不能是命名空间。一个类确实介绍了一个范围,这就是你的意思。@ M。M我一般使用的是,但是我承认C++的上下文中有一个更具体的含义,这是混淆的。我将修改我的答案。那么
用于访问名称空间中的成员的方式是否与
用于访问类中的成员的方式相同?这是不正确的<代码>:用于类和名称空间。@M.M类可以是作用域解析运算符上下文中的“名称空间”。例如,嵌套类定义位于其封闭类的命名空间中。不,类不能是命名空间。一个类确实介绍了一个范围,这就是你的意思。@ M。M我一般使用的是,但是我承认C++的上下文中有一个更具体的含义,这是混淆的。我会修改我的答案。
int main(){
   std.cout("HelloWorld!");
}