template < class CreationPolicy = using_new, class ThreadingModel = single_threaded > class widget : public CreationPolicy, public ThreadingModel { ...
#include <stdio.h> int add(int n); void main(void) { int i= 1; printf("1st time ; i=%d,address=%x\n",i,&i); i = add(i); printf("2nd time ; i=%d,address=%x\n",i,&i); i = add(i); printf("3rd time ; i=%d,address=%x\n",i,&i); } int add(int n) { int i=0; printf("add function; i=%d,address=%x\n",i,&i); i+=n;←なんでここにnを代入するのかわかりません教えてください・・ほんとに・ ここにnを代入する必要があるのでしょうか? nを代入する意味が知りたいのです このプログラムの意味は1つの引数を与えて加算する関数ですちなみに自動変数です return i;
いずれかの手法を用いるのが一般的。どちらもコンパイル時に解決する アプローチだが、まったく別の手法として個々のインターフェースに 固有の ID 値を割り振り、インスタンス側に ID を渡すとオフセット 調整を済ませたポインタを返す関数の実装を強制するっつーのもある。 (Win32 で使われている COM 方式)
実行時効率は 1, 2 最後に COM 方式。プログラマから見た利用の手間は 1 = 2 で、COM 方式はかなり面倒。Microsoft もそれは分かっていて、 COM では ID 値の管理のためにツール・ライブラリを提供した上で、 さらに言語毎とのサポートも提供している。