「C++/C++特有の概念」の版間の差分
削除された内容 追加された内容
→Hello, World!を実行する: 行番号を追加 タグ: 2017年版ソースエディター |
→ポリモーフィズム: わざと間違えているのかもしれないが、C言語で long doubleの絶対値を求める関数は labs() ではなく fabsl()。C言語でも、総称型数学関数<tgmath.h>を使えば引数の型に応じて対応する数学関数が呼び出される。s/abs()/std::abs()/1 タグ: 2017年版ソースエディター |
||
221 行
=== ポリモーフィズム ===
'''ポリモーフィズム'''(polymorphism、多相性、多態性、多様性)とは、同名のメソッドや型などをオブジェクトの種類に応じて使い分けることができる性質のことである<ref>[http://e-words.jp/w/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0.html ポリモーフィズムとは|polymorphism|ポリモルフィズム|多相性 - 意味/定義 : IT用語辞典]</ref>▼
▲<ref>[http://e-words.jp/w/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0.html ポリモーフィズムとは|polymorphism|ポリモルフィズム|多相性 - 意味/定義 : IT用語辞典]</ref>
ポリモーフィズムでは、同一の名前で複数の異なる動作を作成し使うことができる。
例えば、Cで絶対値を求めるには、引数のデータ型に合わせて abs(), fabsf(), fabs(), fabsl(), cabsf(), cabs(), cabsl() の7つの関数を使い分ける必要がある<ref>C言語でも、C99から[[C言語/標準ライブラリ/型総称数学関数|総称型数学関数]]<tgmath.h>を使えば引数の型に応じて対応する数学関数が呼び出される。</ref>。
一方、C++で絶対値を求めるには、引数がどのデータ型であっても std::abs() という1つの関数で求めることができる。
このように1つの関数名を複数の異なる目的で使うことを、'''関数のオーバーロード'''(function overloading)という。
ポリモーフィズムの利点は、メソッド名を統一することで記述ミスを減らせるなどが挙げられる。
=== 継承 ===
|