C++流/类模板/实例



我是C++新学生,很难理解蒸汽输入/输出。

实际上是在从一本书中学习,我发现下面的几行让我感到困惑。

"iostream 库提供了许多用于处理常见 I/O 操作的模板。例如,类模板basic_ostream支持流输出操作..."

那么这是否意味着basic_ostream被定义为:

template <class basic_ostream>

在下一节中,我看到"预定义对象cout是一个ostream实例,据说"连接到"标准输出设备,通常是显示屏。

因此,基于上述陈述,我认为以下内容是正确的。

template <class basic_ostream>
class ostream {
    basic_ostream cout ( "some value" );
}

这让我非常困惑,因为在后面的章节中,这本书开始讨论 put 函数作为......

cout.put('A');

这意味着 cout 实际上是一个类对象,而不是类的实例。我只是混淆了"实例"的定义吗?请帮忙!!

所涉及的模板参数处理从流读取/写入流的字符类型。

cout(和cin,cerr,clog)是这样的:

namespace std { 
    basic_ostream<char> cout;
    basic_ostream<char> cerr;
    basic_ostream<char> clog;
    basic_istream<char> cin;
}

还有一些读取和写入宽字符的版本:

namespace std {
    basic_ostream<wchar_t> wcout;
    basic_ostream<wchar_t> wcerr;
    basic_ostream<wchar_t> wclog;
    basic_istream<wchar_t> wcin;
}

因此,这些标准流中的每一个都是类的一个实例,其中类是模板对从该流读取/写入的字符类型的实例化。

对于它的价值,还有一点:还有另一种称为 std::ios_base::Init 的类型,它在main开始执行之前创建这些实例,并在main完成执行后的某个时间销毁它们。

相关内容

  • 没有找到相关文章

最新更新