std::ios_base::Init の「Init」が大文字なのはなぜですか? [closed] 質問する

std::ios_base::Init の「Init」が大文字なのはなぜですか? [closed] 質問する

標準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_initI

おすすめ記事