作者:一路向北turbo | 来源:互联网 | 2023-05-18 18:13
标准C++库中的所有名称都是小写的,除了std::ios_base::Init
.为什么是这样?
1> user657267..:
在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
.
嗯...检查预标准的libstdc ++实现,在导致C++ 98标准的演变中,有一个点只有一个`ios`类包含`Init`和`init`.那时,不同的名字是绝对必要的,不仅仅是很好.