通常PC用 / 人気 更新 今日 カテ |
電子計算機 > 仕様・構造 > ソフトウェア > プログラミング言語 > 言語仕様 > オブジェクト |
インスタンス |
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS) |
読み:インスタンス |
外語:instance |
品詞:名詞 |
オブジェクト指向の環境やプログラミング言語で、実行される際に作成されるオブジェクトの実体のこと。英語の原義では、(論拠となる)例、実例、例証のこと。
|
概要 |
オブジェクト指向言語の多くは、クラスと呼ばれるオブジェクトの雛形をあらかじめ作っておく。このクラスを元に作成したオブジェクトをインスタンスという。
一度定義されたクラスからは、いくつでもインスタンスを生成することができる。
以下は、C++を例とする。
特徴 |
インスタンス化 |
C++では、クラスの実体をインスタンスといい、クラスを実体化することをインスタンス化という。
例えば HOGE というクラスがあった場合、構造体と同様にローカル変数としてクラスを実体宣言することができる。
HOGE hoge;
あるいは、クラスを動的確保して使う方法もある。
HOGE *hoge = new HOGE;
そしてプログラマーは、hoge というインスタンスについて操作をすることになる。
この二つの使用方法の最大の違いは、寿命である。
寿命 |
インスタンスには寿命が存在し、プログラムの実行中のどこかのタイミングで消える。
C++では明示的に削除することが可能で、また「スコープ」から外れた場合には自動的に消される。一方で、Javaのように明示的には削除できず、全てガベージコレクションに任せる仕様のものもある。
HOGE hoge;
このように、ローカル変数としてクラスを実体宣言した場合、{}の中つまりそのブロック構造の中がスコープであり、そのスコープが終了した時点で、一般の変数と同様にインスタンスの寿命が切れる。寿命が切れた時点で、クラスのデストラクターが呼び出される。if文、for文、while文などが{}でブロックになるほか、関数そのものも{}でブロックである。また、特に何もなく{}でブロックを作ることもできる。
HOGE *hoge = new HOGE;
一方、このようにクラスをnewで動的確保した場合、明示的にdeleteするまで寿命は継続する。deleteした時点でインスタンスの寿命が切れてデストラクターが呼び出されるが、deleteしない場合、プログラムが終了してもデストラクターが呼ばれることはない。
補足 |
プログラミング言語以外でも、インスタンスという用語が使われることがある。
Windows |
16ビット版Microsoft Windowsでは、Windows 3.1までは、実行されたプログラム1個をインスタンスと呼んでいた。
16ビットWindowsの場合、ノンプリエンプティブマルチタスク環境であったため、通常のマルチタスクでいうところのプロセスのことを、呼び分ける目的でインスタンスと呼んだ。
FLASH |
Macromedia FLASHの場合は、ムービー上に置いたシンボルのことをインスタンスという。
シンボルという呼称だけでは違うキーフレームに同じシンボルを配置した時に区別できなくなるため、違う呼称がある。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |