9

テンプレートを宣言しても、C++ でそれを参照しないとします。コンパイラは実行可能ファイルでそれを処理しますか? プロセスメモリを消費しますか?

4

2 に答える 2

14

いいえ、インスタンス化されていない関数テンプレートのコードは生成されません。また、決して呼び出されないクラス テンプレートの非テンプレート メンバ関数のコードは生成されません。

特に、実行可能ファイルのサイズが大きくなったり、実行時のオーバーヘッドが発生したりすることはありません。

于 2013-06-25T18:57:10.397 に答える
4

いいえ、違います。

テンプレートのクラスと関数は、実際のクラスや関数ではありません。代わりに、特定のタイプのクラスと関数を生成する方法をコンパイラに指示するものです。テンプレートを参照すると、コンパイラはテンプレートを使用してソース コードの生成方法を決定し、テンプレートの異なるパラメーター化ごとに 1 回、生成されたコードをコンパイルします。

テンプレートを使用することによる唯一のオーバーヘッドは、コンパイル時間が少し余分にかかることですが、1980 年代以降に構築されたコンピューターにとっては大した問題ではありません。

于 2013-06-25T19:03:06.610 に答える