2016-05-13 12 views
0

最近、私は「Intro to C++」のビデオを見てきました。その中には、他のものより特定のコンセプトを説明する優れた機能があります。しかし、動画のどれも対処していない何かがあり、それはニンジンブラケットの意味です。キャロットブラケットはC++で何をしますか?

例:

int main(){ 

    cout << "Hello World" << endl; 
    return 0; 

} 

私は上記の関数の最初の行にだけ興味があります。私が正しく理解しているならば、coutは後に続く変数または値を表示し、endlは"\n"を表す間に行の終わりを示します。

私は、Pythonから来ている明確にするために...

を私はC++の演算子とキーワードをGoogleで検索しました、と< <は明らかにもバイナリの左シフト演算子として機能しますが、これは、どちらのリストに表示されます/ Javaのバックグラウンドなので、コンマや追加記号が必要です。私は< <がこれと同等かどうかを知りたがったり、似ていますが違うことをしています。

ありがとうございました。

+1

Google:演算子のオーバーロード。 –

+0

<<はコンソール出力演算子としても機能するようにオーバーロードされています。 –

+6

_カロット_(?!)括弧と呼ばれていますか? – ForceBru

答えて

4

<<「が、ストリーム挿入演算子」と呼ばれ、>>が「ストリーム抽出演算子と呼ばれる。文法的に、これらは意味的に整数で動作し、左と右シフト演算子と同じである。

ジャワの文脈から

、あなたはその引数がint型であるかどうかに応じて、異なる動作+オペレーター、このに精通している必要があり、浮く、または文字列(C++は、一般的なオーバーロードすることができますが)。

std::endlは異なり'\n'で、それはまた、 m(端末に行く場合は、デフォルトでが行バッファリングされます)。

出力用+が不要な一時的な文字列の束が作成されることを意味し使用して、それは組み込みの意味を隠してしまうので、驚くことでしょう,(のような&&または||)のオーバーロード。 C++は、その初期段階にあったとき、可変引数テンプレートが利用されていた場合

、それはおそらく<<が、メンバ関数を使用していません。

+0

答えをJavaに戻してくれてありがとう、とても助かりました。 "ストリームをフラッシュする"メモリ管理の用語ですか? –

+1

@KarlaMilettiいいえ。ストリームは、物事を読み書きするために使用できるオブジェクトです。 'std :: cout'は出力ストリームの例です。パフォーマンス上の理由から、ストリームに入れたデータはすぐに画面(ファイルストリームの場合はファイル)に出力されません。代わりに、時々大きなブロックで出力されています。このようなデータブロックの出力は、* flushing *と呼ばれます。 – HolyBlackCat

+0

すばらしい、ありがとう! –

4

C++は、オペレータがその関与の種類に応じて、<<変化の意味をオーバーロードできます。 coutはで、ストリームに書き込むために<<をオーバーロードします。

Here is a listing of many of themthis example on MSDN of a Dateのようにostreamクラスの外に定義された演算子を持つことができるので、完全なリストではありません。

+0

そのリストをありがとう!確かめます。 –

6

これらは「ニンジンブラケット」ではありません。 <<は左ビットシフト演算子であり、それ以上はありません。

C++を使用すると、事業者は、特定のクラスでどのように動作するかを変更することができますので、あなたは<<を使用してのものを印刷することができます。これはオペレータオーバーロードと呼ばれます。 <<は、の場合、にオーバーロードされ、が印刷機能として動作します。ストリームの意味論的文脈において

+0

ありがとう!これは、この方法で過負荷になっている唯一の演算子ですか? –

+1

@KarlaMiletti私が知る限り、「叫び」のために - はい。他のクラスのいくつかは、異なるカスタム演算子を持っています。たとえば、 'std :: cin'で' >> 'を使って、要素を変数に読み込むことができます。 – HolyBlackCat

+1

@KarlaMilettiいいえ、そうではありません。 '+'は加算の代わりに連結を実行する 'std :: string'のためにオーバーロードされます。 – Barmar

関連する問題