C++ では、各メンバー関数には特別なポインタが含まれています。ポインタの名前は固定されており、これと呼ばれます。これはこのクラスのオブジェクトへのポインタであり、その値は現在呼び出されたメンバー関数が配置されているオブジェクトです。初期アドレス。
this ポインターは暗黙的に使用され、パラメーターとしてメンバー関数に渡されます。
これはコンパイル システムによって自動的に実装されるため、プログラマはこのポインタを手動で仮パラメータに追加したり、オブジェクトのアドレスをこのポインタに渡す必要はありません。
C++ では、*this を使用して、呼び出されたメンバー関数が配置されているオブジェクトを表すために this ポインターを明示的に使用することもできます。*this は this が指すオブジェクト、つまり現在のオブジェクトです。
C++ 定数オブジェクト
定数オブジェクトとは、初期値を持つオブジェクトを指します。データ メンバーが変更されないようにしたい場合は、それを定数オブジェクトとして宣言できます。
定数オブジェクトを定義する一般的な形式は次のとおりです。
クラス名 const オブジェクト名 [(実際のパラメータリスト列)];
左端に const を書くこともできます。
const クラス名 オブジェクト名 [(実際のパラメータリスト列)];
オブジェクトが定数オブジェクトとして宣言されている場合、オブジェクトの非定数メンバー関数を呼び出すことはできません。これは、これらの関数が定数オブジェクト内のデータ メンバーの値を変更することを防ぐためです。
ケース: C++this ポインターの使用
#include <iostream>
名前空間 std を使用します。
class Box
{ public: // 构造関数数定义 Box(double l=2.0, double w=2.0, double h=2.0) { length = l; 幅 = w; 高さ = h; } double Volume() //求体积 { 長さ * 幅 * 高さを返します。 int Compare(Box box) { return this->Volume() > box.Volume(); プライベート : 倍長の長さ。// 倍幅; //宽高 さの倍増; //高}; int main(void) {
ボックス box1(3.3, 1.2, 1.5);
ボックス box2(8.5, 6.0, 2.0);
if(box1.compare(box2))
{ cout << "ボックス 2 の体積はボックス 1 より小さいです" <<endl; } else { cout << "ボックス 2 の体積はボックス 1 の体積より大きいか、ボックス 1 と同じです。" <<endl; } return 0; }
結果をコンパイルして実行します。
箱 2 の体積は箱 1 の体積より大きい、または箱 1 と同じです
----------------------------- -
プロセスは 0.07514 秒後に戻り値 0 で終了しました。
続行するには任意のキーを押してください。