忍者ブログ
趣味+メモ用のブログです。 GNU/Linux関連、OSS関連情報、調査事項になるでしょうが、何を書くか分かりません。
[78] [77] [76] [75] [74] [73] [72] [71] [70] [69] [68]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

C++のテンプレートの弊害について


1)ROMを圧迫する
 前回の記事のnm結果を見ればわかりますが、
 テンプレート指定した型ごとに、関数を作成します。
 (defineで関数を作成しているのと似ています)

 ROMを減らしたいのであれば、
 テンプレートに、定数を指定したり、配列サイズ毎に作成したり
 することは極力避けたほうが、良いでしょう

2)コンパイルに時間がかかる
 基本的にテンプレートは、ヘッダーに記述します。
 C++のテンプレートのコンパイル方法は、
 ①コンパイル時にテンプレート展開し
 ②リンク時に、同じエントリーを統合する
 というものです。

 テンプレートヘッダが複数のCPPファイルでインクルード
 されていれば、当然①の時間が増えます。
 ※ これは、@pragmeで抑えたり、cppに実装を書くなどの
  手段はありますが、テンプレート使用について計画性が必要なります。

3)テンプレートの連鎖
 テンプレートを使っているクラスを継承すれば、
 そのクラスもテンプレートになってしまします。

 テンプレートクラスを使用する関数は、もちろん
 テンプレート関数にする必要があります。

 テンプレートの連鎖が起こってしまい、
 1)や2)の問題が解決しにくくなります。

4)テンプレートの継承関係
 テンプレート間では、親子などの関係が全くありません。
 ですので、複数のテンプレートを同じように扱いたい場合は、
 Baseクラスを作成する必要があります。


 










 





  



PR


忍者ブログ [PR]
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
一乗寺 又兵衛
性別:
男性
職業:
コンパイル
趣味:
コンパイル
バーコード
ブログ内検索