「C++/C++特有の概念」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎ポリモーフィズム: わざと間違えているのかもしれないが、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>
'''ポリモーフィズム'''(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>
 
ポリモーフィズムでは、同一の名前で複数の異なる動作を作成し使うことができる。
同一の名前で複数の異なる動作を作成し使うことができる。
 
例えば、Cで絶対値を求めるには、引数のデータ型に合わせて abs(), fabsf(), fabs(), fabsl(), cabsf(), cabs(), cabsl() の7つの関数を使い分ける必要がある<ref>C言語でも、C99から[[C言語/標準ライブラリ/型総称数学関数|総称型数学関数]]<tgmath.h>を使えば引数の型に応じて対応する数学関数が呼び出される。</ref>。
例えば、Cで絶対値を求めるには、
一方、C++で絶対値を求めるには、引数がどのデータ型であっても std::abs() という1つの関数で求めることができる。
引数のデータ型に合わせて、
abs(), labs(), fabs()の3つの関数を使い分ける必要がある。
一方、C++で絶対値を求めるには、
引数がどのデータ型であっても、
abs()という1つの関数で求めることができる。
 
このように1つの関数名を複数の異なる目的で使うことを、'''関数のオーバーロード'''(function overloading)という。
'''関数のオーバーロード'''(function overloading)という。
 
ポリモーフィズムの利点は、メソッド名を統一することで記述ミスを減らせるなどが挙げられる。
メソッド名を統一することで、
記述ミスを減らせるなどが挙げられる。
 
=== 継承 ===