5

私は本を​​読んでいます。Primer ガイドの C++ です。

ある程度はコツがつかめたと思います。いくつかのことを明確にしたいだけです。

  1. aclassはデータ型 (データ型はint, char, ect ..) のようなものであり、Object/Instance は変数のようなものです。これは本当ですか?

  2. データフォームとは?

  3. 声明のどの部分が宣言ですか? それはdata type+the variableで、=は代入ですか?

4

1 に答える 1

5

完全ではありません。

クラスは、オブジェクトを作成するためのテンプレートであるという意味で「データ型のようなもの」ですが、それ自体は使用できるオブジェクトではありません。

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

例えば:

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

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

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

    private:
        std::string name;    
};

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

int main()
{
    Person p, q;
    p.setName("Jill Bloggs");
    q.setName("Bob King");
    std::cout << p.getName() << " " << q.getName() << std::endl;
}

割り当て、変更、使用できる2つのインスタンスを作成しました。これらはインスタンスと呼ばれる変数です。

「データフォーム」が何を意味するのかわかりません。無視してください。

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

class foo
{
    public:

        foo(int value);

        void bar();

    private:
        int x;
};

voidを返すbarという関数があり、xという整数があることを宣言しています。

変数xにはメモリが割り当てられておらず、定義もバーも提供されていないため、これらは単なる宣言です。ソースファイルは、おそらく次のようなバーの定義を提供します。

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

xを値で初期化し、その作成方法を制御するfooのコンストラクター定義(初期化子リストを使用):

foo::foo(int value) : x(value)
{
    //some code
}
于 2012-05-24T19:58:37.857 に答える