仮想関数テーブル(かそうかんすうテーブル、英: virtual method table)あるいはvtableは、プログラミング言語の実装においてなポリモーフィズム、すなわち実行時のメソッドの束縛を実現するために用いられる機構である。 あるプログラムが、継承関係にある複数のクラス(データ型)を持っているとする。たとえばスーパークラス Cat と二つのサブクラス HouseCat と Lion において、クラス Cat が speak という仮想関数(仮想メソッド)を定義しており、サブクラスは適切な実装(鳴く、吠えるといった)を行うものとする。 プログラムがspeakメソッドをCatへのポインタp(Cat クラスおよび Cat の任意のサブクラスを指すことができる)に対して呼び出すと、実行環境は、pが指す実際のオブジェクトの種類(型)に応じてどの実装を呼び出すかを決定しなければならない。 このような動的な割り当てを実現するには様々な方法があるが、C++および関連するプログラミング言語(D言語、Java、C#など)では、vtableによる方法が一般的である。 C言語はオブジェクト指向プログラミングの機能を言語仕様としてサポートしないが、関数ポインタを利用することで仮想関数を模倣することができる。

Property Value
dbo:abstract
  • 仮想関数テーブル(かそうかんすうテーブル、英: virtual method table)あるいはvtableは、プログラミング言語の実装においてなポリモーフィズム、すなわち実行時のメソッドの束縛を実現するために用いられる機構である。 あるプログラムが、継承関係にある複数のクラス(データ型)を持っているとする。たとえばスーパークラス Cat と二つのサブクラス HouseCat と Lion において、クラス Cat が speak という仮想関数(仮想メソッド)を定義しており、サブクラスは適切な実装(鳴く、吠えるといった)を行うものとする。 プログラムがspeakメソッドをCatへのポインタp(Cat クラスおよび Cat の任意のサブクラスを指すことができる)に対して呼び出すと、実行環境は、pが指す実際のオブジェクトの種類(型)に応じてどの実装を呼び出すかを決定しなければならない。 このような動的な割り当てを実現するには様々な方法があるが、C++および関連するプログラミング言語(D言語、Java、C#など)では、vtableによる方法が一般的である。 オブジェクトのインターフェイスを実装から分離する言語(Visual Basic や Delphi など)でも、異なるメソッドポインタの集合を用いるだけで、異なる実装をオブジェクトが使用できるため、vtable による方法を採用する傾向にある。 C言語はオブジェクト指向プログラミングの機能を言語仕様としてサポートしないが、関数ポインタを利用することで仮想関数を模倣することができる。 (ja)
  • 仮想関数テーブル(かそうかんすうテーブル、英: virtual method table)あるいはvtableは、プログラミング言語の実装においてなポリモーフィズム、すなわち実行時のメソッドの束縛を実現するために用いられる機構である。 あるプログラムが、継承関係にある複数のクラス(データ型)を持っているとする。たとえばスーパークラス Cat と二つのサブクラス HouseCat と Lion において、クラス Cat が speak という仮想関数(仮想メソッド)を定義しており、サブクラスは適切な実装(鳴く、吠えるといった)を行うものとする。 プログラムがspeakメソッドをCatへのポインタp(Cat クラスおよび Cat の任意のサブクラスを指すことができる)に対して呼び出すと、実行環境は、pが指す実際のオブジェクトの種類(型)に応じてどの実装を呼び出すかを決定しなければならない。 このような動的な割り当てを実現するには様々な方法があるが、C++および関連するプログラミング言語(D言語、Java、C#など)では、vtableによる方法が一般的である。 オブジェクトのインターフェイスを実装から分離する言語(Visual Basic や Delphi など)でも、異なるメソッドポインタの集合を用いるだけで、異なる実装をオブジェクトが使用できるため、vtable による方法を採用する傾向にある。 C言語はオブジェクト指向プログラミングの機能を言語仕様としてサポートしないが、関数ポインタを利用することで仮想関数を模倣することができる。 (ja)
dbo:wikiPageID
  • 1405676 (xsd:integer)
dbo:wikiPageLength
  • 6745 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 84802929 (xsd:integer)
dbo:wikiPageWikiLink
prop-ja:wikiPageUsesTemplate
dct:subject
rdfs:comment
  • 仮想関数テーブル(かそうかんすうテーブル、英: virtual method table)あるいはvtableは、プログラミング言語の実装においてなポリモーフィズム、すなわち実行時のメソッドの束縛を実現するために用いられる機構である。 あるプログラムが、継承関係にある複数のクラス(データ型)を持っているとする。たとえばスーパークラス Cat と二つのサブクラス HouseCat と Lion において、クラス Cat が speak という仮想関数(仮想メソッド)を定義しており、サブクラスは適切な実装(鳴く、吠えるといった)を行うものとする。 プログラムがspeakメソッドをCatへのポインタp(Cat クラスおよび Cat の任意のサブクラスを指すことができる)に対して呼び出すと、実行環境は、pが指す実際のオブジェクトの種類(型)に応じてどの実装を呼び出すかを決定しなければならない。 このような動的な割り当てを実現するには様々な方法があるが、C++および関連するプログラミング言語(D言語、Java、C#など)では、vtableによる方法が一般的である。 C言語はオブジェクト指向プログラミングの機能を言語仕様としてサポートしないが、関数ポインタを利用することで仮想関数を模倣することができる。 (ja)
  • 仮想関数テーブル(かそうかんすうテーブル、英: virtual method table)あるいはvtableは、プログラミング言語の実装においてなポリモーフィズム、すなわち実行時のメソッドの束縛を実現するために用いられる機構である。 あるプログラムが、継承関係にある複数のクラス(データ型)を持っているとする。たとえばスーパークラス Cat と二つのサブクラス HouseCat と Lion において、クラス Cat が speak という仮想関数(仮想メソッド)を定義しており、サブクラスは適切な実装(鳴く、吠えるといった)を行うものとする。 プログラムがspeakメソッドをCatへのポインタp(Cat クラスおよび Cat の任意のサブクラスを指すことができる)に対して呼び出すと、実行環境は、pが指す実際のオブジェクトの種類(型)に応じてどの実装を呼び出すかを決定しなければならない。 このような動的な割り当てを実現するには様々な方法があるが、C++および関連するプログラミング言語(D言語、Java、C#など)では、vtableによる方法が一般的である。 C言語はオブジェクト指向プログラミングの機能を言語仕様としてサポートしないが、関数ポインタを利用することで仮想関数を模倣することができる。 (ja)
rdfs:label
  • 仮想関数テーブル (ja)
  • 仮想関数テーブル (ja)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is owl:sameAs of
is foaf:primaryTopic of