13,153
回編集
細 (Wiki がページ「テンプレートの使い方」を「C++の基礎 - テンプレート」に、リダイレクトを残さずに移動しました) |
細 (文字列「<source lang」を「<syntaxhighlight lang」に置換) |
||
| 13行目: | 13行目: | ||
以下のソースコードは、様々な型の加算ができる関数である。<br> | 以下のソースコードは、様々な型の加算ができる関数である。<br> | ||
この関数の場合、+演算子を使用できない型はコンパイル時にエラーが出力される。<br> | この関数の場合、+演算子を使用できない型はコンパイル時にエラーが出力される。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
template<typename T> | template<typename T> | ||
T Add(T a, T b) | T Add(T a, T b) | ||
| 34行目: | 34行目: | ||
== テンプレートの特殊化 == | == テンプレートの特殊化 == | ||
テンプレートには、特定の型だけ異なる処理を行うテンプレートの特殊化の機能がある。<br> | テンプレートには、特定の型だけ異なる処理を行うテンプレートの特殊化の機能がある。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
template <typename T> | template <typename T> | ||
T add(T a,T b) | T add(T a,T b) | ||
| 58行目: | 58行目: | ||
<br> | <br> | ||
===== 関数テンプレート ===== | ===== 関数テンプレート ===== | ||
< | <syntaxhighlight lang="c++"> | ||
template <typename T> | template <typename T> | ||
T add(T a, T b) | T add(T a, T b) | ||
| 68行目: | 68行目: | ||
===== クラステンプレート ===== | ===== クラステンプレート ===== | ||
宣言方法は、下記のようにすると、テンプレート引数に指定した型を持つようになる。<br> | 宣言方法は、下記のようにすると、テンプレート引数に指定した型を持つようになる。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
CMyClass<int> clsHoge(); // テンプレートクラスのインスタンス生成 | CMyClass<int> clsHoge(); // テンプレートクラスのインスタンス生成 | ||
</source> | </source> | ||
< | <syntaxhighlight lang="c++"> | ||
template <typename T> | template <typename T> | ||
class CMyClass | class CMyClass | ||
| 85行目: | 85行目: | ||
任意のメンバ関数にだけ関数テンプレートを使用することもできる。<br> | 任意のメンバ関数にだけ関数テンプレートを使用することもできる。<br> | ||
定義方法は、関数テンプレートとほぼ同じである。<br> | 定義方法は、関数テンプレートとほぼ同じである。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
class CMyClass | class CMyClass | ||
{ | { | ||
| 100行目: | 100行目: | ||
C++11から、typedefをusingで記述できるようになった。<br> | C++11から、typedefをusingで記述できるようになった。<br> | ||
以下の2つは同様の意味を持つ。<br> | 以下の2つは同様の意味を持つ。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
typedef TypographicError typo; | typedef TypographicError typo; | ||
using typo = TypographicError; | using typo = TypographicError; | ||
| 107行目: | 107行目: | ||
また、usingを用いたエイリアスにはテンプレートを使用することができる。<br> | また、usingを用いたエイリアスにはテンプレートを使用することができる。<br> | ||
このように、型のエイリアスの作成、テンプレート引数の再編成などが行える。<br> | このように、型のエイリアスの作成、テンプレート引数の再編成などが行える。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
UsingTemplate.cpp | UsingTemplate.cpp | ||
template<typename T, typename U> | template<typename T, typename U> | ||