標準C++ライブラリの名前はすべて小文字です。std::ios_base::Init
。 どうしてこれなの?
ベストアンサー1
初期の下書きIOStream クラスのうち、 はios_base
元々存在せず、basic_ios
基本クラスであり、Init
とその他のメンバーを担当していましたが、これらは後に に分離されましたios_base
。
basic_ios
また、(そしてまだ持っています) はinit
関数であり、2 つの名前は必ずしも区別する必要はありませんでしたが、おそらく混乱を避けるために、クラス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
。
いずれにせよ、最終的にこれら 2 つが別のクラスに置かれたという事実を考慮しても、この 2 つを明確に区別することは理にかなっています。完全に別の名前を選択することもできましたが、おそらくInit
/はクラスと関数の機能を説明するのに最適な意味上の選択であると考えられていました。また、何らかの理由で大文字の で始まるinit
古い を単に模倣していた可能性もあります。Iostream_init
I