2010-11-28 24 views
5
// my first program in C++ 

#include <iostream> 
using namespace std; 

int main() 
{ 
    cout << "Hello World!"; 
    return 0; 
} 

coutはオブジェクトですか? もしそうなら、それはどのようにインスタンス化されますか? (私は "new ...."のようには見えません)C++でのcout(標準出力)

+0

あなたは "count"を書きました。それを "コンソールアウト"のように "c-out"と考えることは有益です。同様に、「c-in」があります。 – mpen

答えて

1

はい、coutはオブジェクトです。それは、(一緒にcinまたはcerrのようないくつかの他のストリーミングオブジェクトで)あなたの後ろ<iostream>ヘッダファイルでインスタンス化されます:)

7

COUTは<のiostream >のどこかで宣言されたグローバルオブジェクトです。

ところで、JavaやC#と異なり、オブジェクトを作成するのにnewは必要ありません。たとえば、これは動作します:

std::string str; // creates a new std::string object called "str" 
+1

」で宣言されていますが、必ずしもそこに定義されているとは限りません。 – ybungalobill

+0

@ybungalobillあなたは正しいです、私は編集しました。 –

0

Coutは、IOSTREAMヘッダーでインスタンス化したばかりのライブラリの一部です。

1

はい、プログラムの起動時にC++ランタイムライブラリによって初期化されます。

1

coutが対象です。これは、プログラムの起動時に実装によってインスタンス化されます。これは、CRT DLLまたは静的にリンクされたコードで発生する可能性があることを意味します。

2

現在のC++標準状態(27.3/2):

[...]のオブジェクトが構築され、そして 関連は前または最初 時間オブジェクト間 にある程度の時間が確立されていますメイン の本体が実行を開始する前に、いずれかの場合には、 ios_base::Initが作成され、 にあります。オブジェクトは実行中に が破棄されず、 が実行されます。

AND([iostream.objects]/2から:

変換部は <iostream>または明示 ios_base::Initオブジェクトを作成が含まれている場合、これらのストリーム オブジェクトはの 動的初期化の前に構築されなければなりません非ローカル 翻訳単位で定義されているオブジェクト "

C++の言葉では、翻訳単位は、ファイルと、そのファイルに含まれるすべての/すべてのヘッダーのコンパイラー用語です。

+0

まあ、ファイル、およびそのファイルに含まれるすべての/すべてのヘッダー。 –

+0

@Billy:thnx、corrected – Abhay

関連する問題