ビデオ: 人材 採用 C言語系プログラマー Androidアプリの開発経験あり 2024
フェンス・ストラドラーとして、C ++は早期バインディングと後期バインディングの両方をサポートします。任意の与えられたプログラミング言語は、その開発者の気まぐれに基づいて、早期または後期のバインディングをサポートすることができます。 Cのような古い言語は、早期の結合のみをサポートする傾向があります。 JavaやC#のような最近の言語は、レイトバインディングのみをサポートしています。
C ++のデフォルトが早期バインディングであることに驚くかもしれません。 OverloadOverride プログラムの出力は次のようになります。
<!私たちは学生です::calcTuition Enterキーを押して続行してください。少しの日付であれば理由は簡単です。最初に、C ++はデフォルトで可能な限りCのように動作して、前のバージョンとの上位互換性を保持しなければなりません。第2に、ポリモーフィズムは、呼び出しを実行するために必要なデータ格納とコードの両方に関して、すべての関数呼び出しに少量のオーバーヘッドを追加します。
C ++の創始者は、システムの選択言語としてC ++を採用しない理由として追加のオーバーヘッドが使用されることを懸念していました。
<! - 2 - >
OverloadOveride の宣言の次の変更に示すように、C ++キーワード virtual、 プログラム: クラスの学生{public:virtual void calcTuition(){cout << "私たちは学生にいる:calcTuition" << endl;}};
calcTuition()が多相メンバ関数であることをC ++に伝えるキーワード
virtual 。つまり、calcTuition()を宣言すると、calcTuition()が呼び出されるオブジェクトの実行時の型が疑わしい場合には、その呼び出しが遅くバインドされます。
プログラムを実行すると、次の出力が生成されます。 We're in Student::calcTuition We are Graduate Study:calcTuition Press続行するにはEnterキーを押してください。 C ++環境に付属のデバッガに慣れている場合は、この例を実際に実行する必要があります。 fn()が呼び出されたのは初めてですが、2回目の呼び出しでGraduateStudent::calcTuition()が呼び出されるまでには、Student::calcTuitionあなたが本当にそれを試してみるまで多形性を感謝することはできません。
<! - 3 - >
仮想クラスを宣言する必要があります。 「バーチャルネス」はサブクラスに自動的に持ち込まれます。しかし、時には、プログラマーは関数仮想をどこでも(仮想的に)宣言するコーディング標準に従っていることがあります。