除了之外,标准C ++库中的所有名称都是小写字母std::ios_base::Init
。为什么是这样?
在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
具有一个单独的类负责初始化标准流的想法追溯到至少CFRONT 3.0,如可以通过可以看出Iostream_init
在此头中。在某些时候,它决定不仅使类的成员ios
/ basic_ios
/ios_base
但它应该改名Init
。
在任何情况下,都应消除两者的歧义,即使考虑到最终将它们放在单独的类中这一事实也是如此。他们本来可以选择完全分开的名称,但是大概Init
/init
被认为是描述类和函数做什么的最佳语义选择,并且也有可能只是模仿较旧的名称Iostream_init
,出于某种原因,它们也以大写字母开头I
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句