(プログラムの過程でその値を変更できます)
または、「何かのインスタンス」はクラスとオブジェクトに厳密に関連していますか?もしそうなら、C++に関して「変数」の概念をどのように定義しますか?
私の知る限り、そのタイプのプリミティブタイプinstancesの値を呼び出すことは正しい(たとえば、 "C++ Type System"を参照) 、Visual Studioのマニュアルからですが、私はまだ別のソースを探しています)。ただし、この用語は主にオブジェクトについて説明するときに使用されると思います。オブジェクトは、クラスCまたはそのサブクラスの1つで定義されたコンストラクターから作成された場合、クラスCのインスタンスです。
C++の変数はランタイムの概念ではありません。これは、変数名と抽象(constでない場合は可変)位置との間の字句バインディングとしてコンパイラー内に存在します。プログラムがコンパイルされると、変数は存在しなくなります。代わりに、データはレジスタやメモリなどで読み書きされます。
または、「何かのインスタンス」はクラスとオブジェクトに厳密に関連していますか?もしそうなら、C++に関して「変数」の概念をどのように定義しますか?
C++で可能な限り簡潔にする
ただ明確にします:
あなたが人生全体を純粋主義と洗練に費やしたくないのであれば...はい。
一意に識別されるものを保持するたびに、インスタンス化を行うforge他の一意に識別可能なものへの使用。
それらの一部インスタンス化はより正確な名前を持っているかもしれませんが、一般的にはこれでうまくいきます。
さて、「正しい」とはどういう意味ですか?
それについて非常に厳密にしたい場合は、以下を区別する必要があります。
したがって、式である変数は、型を持っています。その値(参照するオブジェクト)は、あるクラスのインスタンスになります。また、変数の型とオブジェクトのクラスは一般に同じものではないことに注意してください。変数の静的型は、オブジェクトのランタイムクラスに上限を設定しますが、そのため、クラスは、型に対応するクラスのsubtypeでなければなりません。
あの大きな一口をずっと繰り返したいですか?嫌です。どの程度厳密に、または大まかに話したいかは、状況によって異なります。したがって、「変数はこの型のインスタンスである」と言っても実際には問題ありません。ここで実際に起こっていることは、オブジェクトとそのランタイムクラスのスーパークラスを参照するために、変数と型を意味論的に使用していることです。
多くの人々は、クラスのインスタンスのために「インスタンス」を予約しています。その場合、C++では、変数はクラスのインスタンス、インスタンスへの参照、インスタンスへのポインター、またはプリミティブ型になる可能性があります(構造体をそのコンテキストでクラスとしてカウントする可能性がありますが、ほとんどの場合、まったく同じです)。 JavaまたはObjective-Cでは、変数はインスタンスではなく、インスタンスへの参照になる可能性があります。
忘れました:しばらくの間、C++ポインターは、コンストラクターが実行を開始する前の「this」などの生のメモリーへのポインターになることがあります。この時点では* thisをインスタンスとは呼ばないでしょう。