热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么std::ios_base::Init中的"Init"大写?

如何解决《为什么std::ios_base::Init中的"Init"大写?》经验,为你挑选了1个好方法。

标准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`.那时,不同的名字是绝对必要的,不仅仅是很好.
推荐阅读
author-avatar
一路向北turbo
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有