C++での関数のオーバーロードと戻り型
同じスコープ内の同じ関数名に対して複数の定義を持つことができます。関数の定義は、引数リスト内の引数のタイプや数によって互いに異なる必要があります。戻り値のタイプのみが異なる関数宣言をオーバーロードすることはできません。
関数のオーバーロードは、基本的にコンパイル時のポリモーフィズムです。関数のシグネチャをチェックします。シグニチャが同じでない場合は、オーバーロードされる可能性があります。関数の戻り型は、関数のオーバーロードに影響を与えません。リターンタイプが異なる同じ関数シグネチャはオーバーロードされません。
以下は、同じ関数print()を使用して異なるデータ型を出力する例です
サンプルコード
#include <iostream> using namespace std; class printData { public: void print(int i) { cout << "Printing int: " << i << endl; } void print(double f) { cout << "Printing float: " << f << endl; } void print(char* c) { cout << "Printing character: " << c << endl; } }; int main(void) { printData pd; pd.print(5); // Call print to print integer pd.print(500.263); // Call print to print float pd.print("Hello C++"); // Call print to print character return 0; }
出力
Printing int: 5 Printing float: 500.263 Printing character: Hello C++
-
C++のデフォルトの引数と仮想関数
概念を簡単に理解できるように、C++のサンプルプログラムを考えてみましょう- サンプルコード #include<iostream> using namespace std; class B { public: virtual void s(int a = 0) { cout<<" In Base \n"; } }; class D: public B { &nb
-
C++でのフレンドクラスと関数
クラスのフレンド関数はそのクラスのスコープ外で定義されていますが、クラスのすべてのプライベートメンバーと保護されたメンバーにアクセスする権利があります。フレンド関数のプロトタイプはクラス定義に表示されますが、フレンドはメンバー関数ではありません。 フレンドは、関数、関数テンプレート、メンバー関数、またはクラスまたはクラステンプレートにすることができます。この場合、クラス全体とそのすべてのメンバーがフレンドになります。 関数をクラスのフレンドとして宣言するには、次のように、クラス定義の関数プロトタイプの前にキーワードfriendを付けます- class Box { double width;