为什么是“初始化”在std :: ios_base ::初始大写?

除了std::ios_base::Init之外,标准C ++库中的所有名称都是小写字母。 为什么是这样?

One Solution collect form web for “为什么是“初始化”在std :: ios_base ::初始大写?”

在IOStream类的早期草稿中,您可以看到ios_base最初不存在, basic_ios是基类,负责Init和其他后来分成ios_base成员。

basic_ios也有(并且仍然有 )一个init函数,虽然这两个名字不一定是不同的,大概是为了避免混淆,决定命名类Init和函数init 。 而且,如果没有这种区分,在使用这个类的时候,下面的东西是必须的:

 struct ios_base { struct init{}; void init(); }; ios_base::init i1; // error struct ios_base::init i2; // ok 

负责初始化标准stream的独立类的想法至less可以回到CFront 3.0,正如Iostream_init在这个头文件中可以看到的Iostream_init 。 在某些时候,决定不仅要使该类成为ios / basic_ios / ios_base的成员,还要将其重命名为Init

无论如何,即使考虑到它们最终被放置在不同的class级中,也是有意义的。 他们本来可以select完全独立的名字,但是据推测Init / init被认为是描述类和函数做什么的最好的语义select,而且也有一个机会,就是模仿了旧的Iostream_init ,大写字母I

  • IOStream库有什么严重的select? (除了cstdio)
  • 将ostream转换为标准string
  • C ++标准是否要求iostream的性能很差,或者我只是处理一个糟糕的实现?
  • testingstream.good()或!stream.eof()读取最后一行两次
  • 是int8_t和uint8_t打算是字符types?
  • 为什么C ++ STL iostream不是“exception友好”?
  • 为什么C ++stream使用char而不是unsigned char?
  • 如何让IOStream执行得更好?
  • 为什么不能std :: ostream被移动?
  • C ++标准库:如何编写cout,cerr,cin和endl的包装?
  • 如何正确地重载ostream的<<运算符?