2012-05-24 5 views
5

私はC + +の入門書である本を読んでいます。これらのC++用語は正しいですか?

私はそれまでポイントをつけていると思いますが、私はいくつかのことを明確にしたいと思います。

  1. classは(ECT .. intcharあるデータ・タイプ)データ・タイプのようなものであるとObject /インスタンス変数と同様であることを言います。これは本当ですか?

  2. データフォームとは何ですか?

  3. 宣言はどの部分ですか?それはdata type + the variableであり、=は割り当てですか?

+4

ソースファイルは、おそらくのようなバーの定義を提供しますなぜそんなに多くのdownvotes? – TeaOverflow

+0

私は分かりません。質問は簡単に答えることができると思っていたので、効率的に返すことができるように質問を書く時間がかかりました。 – Ayfiaru

+2

少し厳しいと思います。彼が既に本を読んでいて、混乱しているのであれば、彼らは正当な質問です。 –

答えて

5

かなりです。

クラスは、オブジェクトの作成のためのテンプレートであるという意味で「データ型と似ていますが、使用できるオブジェクトではありません。

このテンプレートを使用してオブジェクトのインスタンスを作成すると、そのオブジェクトを使用できます。必要な数だけインスタンスを作成することができます。インスタンスを変数と考えることができます。例えば

class Person 
{ 
    public: 
     Person() : name("Joe Bloggs") {} 

     std::string getName() { return name; } 

     void setName(std::string n) { name = n; } 

    private: 
     std::string name;  
}; 

これは、人のためのクラス定義です。変数ではありません。まだ存在しないので、setNameを呼び出すことはできません。しかし、あなたがするとき:

あなたが割り当て、変更、および使用できる人のインスタンスを2つ作成しました。それらはインスタンスと呼ばれる変数です。

"データ形式"が何を意味するのか分かりませんが、無視してください。

宣言に関して - 宣言は何かのインスタンスが存在すると述べています。あなたがクラスを作成し、あなたのヘッダファイルが持っていた場合、例えば:

class foo 
{ 
    public: 

     foo(int value); 

     void bar(); 

    private: 
     int x; 
}; 

あなたは、ボイド、あなたはXと呼ばれる整数を持っていることを返す関数と呼ばれる棒を持っていることを宣言しています。

変数xにはメモリは割り当てられていません。また、定義もbarも提供されていないため、宣言に過ぎません。

void foo::bar() 
{ 
    //some code 
} 

と値でXを初期化(初期化子リストで)が作成された方法を制御しますfooのコンストラクタdefiniton:

foo::foo(int value) : x(value) 
{ 
    //some code 
} 
+0

説明に時間を割いてくれてありがとう! – Ayfiaru

+1

問題ありません。それは簡単になります - あなたはあなたの上年には15分で3ヶ月かかった2年生の最終的なプロジェクトを書き直すことができます:)(あなたが大学にいると仮定し、笑)。 –

+0

恐ろしい、ありがとう;) – Ayfiaru

関連する問題