web-dev-qa-db-ja.com

coutとcinは関数ではないので、それらは何ですか?

一般的にCプログラミング言語ではprintfとscanfを関数と見なします。 coutとcinに関して言えば、C++ではそれらは何ですか?つまり、括弧が付いていないため関数にはできないため、関数ではありません。では、coutとcinは標準の入出力関数ですか?それとも他の何かですか?

12
user2643191

std::cout および std::cin はクラスのグローバルオブジェクトです std::ostream および std::istream それぞれ、演算子<<>>をオーバーロードしました。 演算子のオーバーロード について読む必要があります。

   cout    <<      expr  ;
  ~~~~~~  ~~~~   ~~~~~~~~
  object   op.   argument 

これは関数呼び出しのようなものです。関数はオーバーロードされた演算子であり、これに対するショートカットです。

cout.operator<<(expr);

またはこれ:

operator<<(cout, expr);

過負荷解決の結果に応じて

18
deepmax

coutはタイプ ostream のオブジェクトです。 cinはタイプ istream のオブジェクトです。

7
ForEveR

これらはグローバル変数であり、ヘッダー<iostream>で宣言されています。

3
john

Xが変数であると仮定します(整数型とします)。それに値を入れたいと思います。

Cin >> xと書きます。

ただし、cin.operator >>(x)と記述してintデータを配置することもできます。これは、cinがオブジェクトであり、演算子>>がxが渡される関数であることを意味します。

0
user8295702

cinはistreamから派生したオブジェクトであり、coutはostreamクラスから派生したオブジェクトです。両方(istreamとostream)は、iosという名前の親クラスから派生しています。

0
nikhil sugandh