C++でのアーリーバインディングとレイトバインディング
このセクションでは、C++でのアーリーバインディングとレイトバインディングについて説明します。バインディングとは、識別子をアドレスに変換するプロセスを意味します。各変数と関数に対して、このバインディングが行われます。関数の場合、呼び出しをコンパイラーによる正しい関数定義と照合します。バインドは、コンパイル時または実行時に行われます。
アーリーバインディング
これはコンパイル時のポリモーフィズムです。ここでは、アドレスを関数呼び出しに直接関連付けます。関数のオーバーロードの場合、これは早期バインディングの例です。
例
#include<iostream> using namespace std; class Base { public: void display() { cout<<" In Base class" <<endl; } }; class Derived: public Base { public: void display() { cout<<"In Derived class" << endl; } }; int main(void) { Base *base_pointer = new Derived; base_pointer->display(); return 0; }
出力
In Base class
遅延バインディング
これは実行時のポリモーフィズムです。このタイプのバインディングでは、コンパイラーは実行時にオブジェクトタイプを識別するコードを追加し、呼び出しを正しい関数定義と照合します。これは、仮想関数を使用して実現されます。
例
#include<iostream> using namespace std; class Base { public: virtual void display() { cout<<"In Base class" << endl; } }; class Derived: public Base { public: void display() { cout<<"In Derived class" <<endl; } }; int main() { Base *base_pointer = new Derived; base_pointer->display(); return 0; }
出力
In Derived class
-
C++のクラスとオブジェクト
クラスは、オブジェクト指向の概念をサポートし、ユーザー定義のデータ型であるため、C++の主要な機能です。クラスはオブジェクトの仕様を提供し、データ変数と、単一のパッケージでデータを操作するための関数を含みます。 クラス定義 クラス定義は、キーワードclassで始まり、次にクラス名で始まります。その後、クラス本体が定義されます。中括弧で囲まれています。クラス定義には、セミコロンまたはその後の定義のリストが含まれている必要があります。 C++でのクラス定義の例は次のとおりです。 class student { int rollno; char
-
C++でのフレンドクラスと関数
クラスのフレンド関数はそのクラスのスコープ外で定義されていますが、クラスのすべてのプライベートメンバーと保護されたメンバーにアクセスする権利があります。フレンド関数のプロトタイプはクラス定義に表示されますが、フレンドはメンバー関数ではありません。 フレンドは、関数、関数テンプレート、メンバー関数、またはクラスまたはクラステンプレートにすることができます。この場合、クラス全体とそのすべてのメンバーがフレンドになります。 関数をクラスのフレンドとして宣言するには、次のように、クラス定義の関数プロトタイプの前にキーワードfriendを付けます- class Box { double width;