Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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++ 什么';在C+中使用ios#u base时,作用域解析运算符的用途是什么+;_C++_Class_Scope_Resolution_Operator Keyword - Fatal编程技术网

C++ 什么';在C+中使用ios#u base时,作用域解析运算符的用途是什么+;

C++ 什么';在C+中使用ios#u base时,作用域解析运算符的用途是什么+;,c++,class,scope,resolution,operator-keyword,C++,Class,Scope,Resolution,Operator Keyword,下面的例子来自比亚恩的书- “使用C++编程和原理”,示例: fstream fs; fs.open("foo",ios_base::in); fs.close(); fs.open("foo",ios_base::out); 我知道在使用枚举时,当类中有类时,我对名称空间使用范围解析运算符,但我不明白的是,在使用ios_base::in和ios_base::out时,范围解析运算符的用途是什么 使用ios_base::in和ios_base::out时,作用域解析运算符的用途是什么 目的是解

下面的例子来自比亚恩的书- “使用C++编程和原理”,示例:

fstream fs;
fs.open("foo",ios_base::in);
fs.close();
fs.open("foo",ios_base::out);
我知道在使用枚举时,当类中有类时,我对名称空间使用范围解析运算符,但我不明白的是,在使用
ios_base::in
ios_base::out
时,范围解析运算符的用途是什么

使用
ios_base::in
ios_base::out
时,作用域解析运算符的用途是什么

目的是解决范围问题。

指定此上下文中的符号
in
out
位于作用域
[std:]ios\u base

否则,您的编译器就不会有您正在谈论的
in
out
的最细微的线索


具体地说,在本例中,它们是类的静态成员
std::ios_base

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


最值得注意的是,您的列表不包括类的静态成员。这正是
in
out
的含义-它们是,因此您需要范围解析操作符来解析它们。适用性不限于静态数据成员:静态成员函数也使用范围解析运算符进行解析。

ios\u base
指一个类,特别是
std::ios\u base
(参见标准中的C++11 27.5.3[ios.base])
ios_base::in
定义为
fmtflags
类型的
static constexpr
变量

因此,
ios\u base::in
ios\u base::out
和friends只命名常量变量

e、 g:


为了解析作用域,可能…我已经这样做了:,我包括了我正在使用namespace std,但我不能在ts()和x上使用作用域解析运算符,因为我需要对象来访问它们,然而,ios_base是一个类,我仍然不明白为什么它需要作用域解析运算符来访问和输出,为什么它不能用ios_base的对象进出?@zLeon:可以。但是你建议创建什么样的ios_base对象呢?为什么?您缺少的是
std::ios\u base
的静态成员。
class ios_base
{
    public:
    static constexpr fmtflags out = 1234 /* (or any other constant) */;
};

int main()
{
    // Access static member `out` of class `ios_base`
    printf("%d", ios_base::out);
}