私は本を読んでいます。Primer ガイドの C++ です。
ある程度はコツがつかめたと思います。いくつかのことを明確にしたいだけです。
a
class
はデータ型 (データ型はint
,char
, ect ..) のようなものであり、Object
/Instance は変数のようなものです。これは本当ですか?データフォームとは?
声明のどの部分が宣言ですか? それは
data type
+the variable
で、=
は代入ですか?
私は本を読んでいます。Primer ガイドの C++ です。
ある程度はコツがつかめたと思います。いくつかのことを明確にしたいだけです。
aclass
はデータ型 (データ型はint
, char
, ect ..) のようなものであり、Object
/Instance は変数のようなものです。これは本当ですか?
データフォームとは?
声明のどの部分が宣言ですか? それはdata type
+the variable
で、=
は代入ですか?
完全ではありません。
クラスは、オブジェクトを作成するためのテンプレートであるという意味で「データ型のようなもの」ですが、それ自体は使用できるオブジェクトではありません。
そのテンプレートを使用してオブジェクトのインスタンスを作成すると、そのオブジェクトを利用できます。必要な数のインスタンスを作成できます。これらのインスタンスは変数と考えることができます。
例えば:
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
}