在C++中,std::cin 对象定义在哪里
In C++, where is std::cin object defined?
在C++中,istream 对象std::cin
在标头 <iostream>
中声明,但它在哪里定义?
定义它的地方不是标准规定的,它完全取决于实现。
这是我所在的地方:
$ nm -C /usr/local/lib64/libstdc++.so.6 | grep -w cin
0000000000305900 B std::cin
您正在使用的实现以某种形式提供它们。有关它们在运行时的位置的细节是实现定义的,但对它们的访问是标准定义的。它们的寿命和行为同样由标准定义:
C++11 § 27.4.1(2)
在构造类 ios_base::Init 的对象之前或期间的某个时间构造对象和关联,并且在任何情况下都
main
主体开始执行之前。294 在程序執行期間,物件不會被摧毀。295 在翻译单元中包括<iostream>
的结果应<iostream>
定义一个具有静态存储持续时间的ios_base::Init
实例。同样,整个程序的行为就好像至少有一个具有静态存储持续时间的ios_base::Init
实例一样。
在编译器
驱动程序自动链接到可执行文件的库中(例如 g++
或clang++
)。
它是类 istream
的对象。因此,当您使用cin
时,您只需创建一个istream
类型对象。它具有外部链接和静态持续时间。
标准输入流是由环境确定的字符源。通常假定它是来自外部源的输入,例如keyboard
或file
。
作为类istream
的对象,字符可以使用提取运算符(operator>>
)作为格式化数据检索,也可以作为无格式数据检索,使用成员函数如read
。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 使用 CIN COUT 显示垃圾值的文件对象?
- 如何用对象向量重载 cin(>>)
- cin 对象如何根据用户需要将字符转换为不同类型的字符?
- cin和cout对象的生命周期是什么?C++
- 我创建的c++istream对象和cin之间的区别在哪里,它在库中的可见位置在哪里
- 未知数量的对象的 CIN
- Cin 和 Cout 对象如何在循环中工作
- 为什么像cin,cout,string等东西被认为是对象
- 插入>>运算符重载:从 CIN 检索对象的 CTOR 参数时的异常处理
- Cin 对象返回值 c++
- 在C++中,std::cin 对象定义在哪里
- 其中是放置的cout、cin对象的定义
- 像Char一样用Int填充数组;c++中的cin对象
- 使用cin对象进行输入验证并清除缓冲区(c++)
- 在c++中,cin和cout对象与其类iostream的关系是怎样的?
- cin.clear() 不会重置 cin 对象
- 使用std::cin可以将多长字符串读入字符串对象
- 关于>>、<<运算符和 cin 和 cout 对象组合的问题
- 关于cin函数到一个对象的所有公共成员