忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

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

template,一年向け

C++を勉強しているとtemplateの存在を知ります。
巷のページでも解説されていますが、
あえてここで軽く読んでもらってtemplateの感覚をつかみ、
勉強するときにスムーズに習得できたらいいなと思い記事を書きました。
読み物としてどうぞ。

拍手[0回]



以下のプログラムを理解すると、templateはもうマスターしたも同然です。

#define SWAP(type,a,b) {\
type hako; \
hako=a; \
a =b; \
b =hako; \
}
 
int main()
{
int num1=893,num2=24;
printf("%d.%d\n",num1,num2);
SWAP( int, num1, num2 );
printf("%d.%d\n",num1,num2);
 
 
    return 0;
}
/* -出力-
893,24
24,893
*/

値を交換するSWAPマクロです。第一引数に型、第二第三引数に交換する変数。
第一引数に型情報を持たせることでint以外にもflaotや構造体、クラスなどを指定することができます。

型を引数としてマクロに渡すのは最初は違和感ありますが、読み解いてくれると嬉しいです。


templateは「型が違うだけで処理は全く一緒」という時に効果を発揮します。
ではSWAPマクロをtemplate関数で記述すると以下の様になります。

// 呼び出し元の変数を値を変更する必要があるので
// 引数は参照で受け取っています。
template<class Type>
void swap( Type& a, Type& b )
{
 Type hako;
 hako = a;
 a=b;
 b=hako;
}
int main()
{
int num1=893,num2=24;
printf("%d,%d\n",num1,num2);
swap<int>(num1,num2);
printf("%d,%d\n",num1,num2);
 
    return 0;
}

swap<型名>(変数1,変数2);
この型名のところにintやfloat、クラスや構造体などを指定できます。

templateは関数・クラス・クラス内のメンバ関数などに適応できます。
templateは勉強すればするほど深いです。
深く勉強されたい方は「 Modern C++  Design」という本をどうぞ。未知の世界が広がってます。
ジュンク堂のC++の場所の一番上の段にあります。

by リーダ和田
PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

無題

  • by アッキー
  • 2012/03/11(Sun)08:29
  • Edit
おおーテンプレートの紹介ですか~
もし良ければ
次の俺の記事で少しだけ補足して良い?

無題

  • by リーダ和田
  • 2012/03/11(Sun)11:22
  • Edit
全然いいよー

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

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

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]