在C++中使用ios_base时,范围解析运算符的用途是什么

zLe*_*eon 2 c++ scope resolution class operator-keyword

以下示例来自Bjarne的书 - "使用C++编程和原理",示例:

fstream fs;
fs.open("foo",ios_base::in);
fs.close();
fs.open("foo",ios_base::out);
Run Code Online (Sandbox Code Playgroud)

我理解我在使用枚举时使用范围解析运算符,当在类中有类时,但我不明白的是,使用ios_base::in和时范围解析运算符的目的是什么ios_base::out

Lig*_*ica 7

使用ios_base::in和时,范围解析运算符的用途是什么ios_base::out

目的是,嗯,解决范围.

它指定符号inout在此上下文中位于范围内[std::]ios_base.

否则,你的编译器将不具有最微弱的线索inout你谈论.

具体来说,在这种情况下,它们是该类的静态成员std::ios_base.


das*_*ght 5

查看范围解析运算符的一般方法是,您可以使用它来解析可以静态解析的事物.这包括您在问题中列出的内容,但也应包括其他内容.

最值得注意的是,您的列表不包括类的静态成员.这恰恰是inout是-他们是静态数据成员,所以你需要范围解析操作符来解决这些问题.适用性不仅限于静态数据成员:还使用范围解析运算符解析静态成员函数.