C ++テンプレートをヘッダーファイルにのみ実装できるのはなぜですか?
C ++でテンプレートをインスタンス化すると、コンパイラは新しいクラスを作成します。このクラスには、テンプレート引数を配置したすべての場所が、使用時に渡す実際の引数に置き換えられています。 例の場合 −
template<typename T> class MyClass { T foo; T myMethod(T arg1, T arg2) { // Impl } };
そして、プログラムのどこかでこのクラスを使用してください。
MyClass<int> x;
コンパイラは、渡した型引数ごとにこれに遭遇すると、新しいクラスを作成します。たとえば、異なるテンプレート引数を使用して3つのオブジェクトを作成した場合、3つのクラスが取得されます。これは、-
と同等です。class MyClassInt { int foo; int myMethod(int arg1, int arg2) { // Impl } };
そのためには、コンパイラは、そのようなステートメントに遭遇する前に、クラスとメソッドの実装にアクセスして、テンプレート引数(この場合はint)でそれらをインスタンス化する必要があります。これらのテンプレートクラスの実装がヘッダーに含まれていない場合、アクセスできないため、コンパイルされません。
-
HTMLファイルがソースモジュールからJavaScript関数を見つけられないのはなぜですか?
これは、「export」ステートメントを使用していない場合に発生する可能性があります。スクリプトファイルにインポートされる関数の前に「エクスポート」を使用します。 JavaScriptファイルは次のとおりで、emo.jsという名前のファイルがあります。 demo.js console.log("function will import"); export function test(){ console.log("Imported!!!"); } 上記の関数をインポートする「index.html」ファイルは次のとおりで
-
なぜC++が最高のプログラミング言語なのですか?
C++は非常に強力な言語として知られています。 C ++を使用すると、コンピューターリソースの使用方法を細かく制御できるため、適切な方法で、リソースを安価に使用できる速度と機能は、他の言語を凌駕できるはずです。 C ++のパフォーマンスのおかげで、ゲームエンジン、ゲーム、デスクトップアプリの開発によく使用されます。多くのAAAタイトルのビデオゲームはC++で構築されています。 C ++の最大の強みは、C ++がいかにスケーラブルであるかということです。そのため、リソースを大量に消費するアプリは通常、C++を使用して構築されます。静的に型付けされた言語として、C ++は、コードが実行される前に