84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
人生最曼妙的风景,竟是内心的淡定与从容!
もちろん、返されたベクトル値は同じアドレスではなく、返された値はコピーされています。 ポインタと const ポインタを返すことができます。
によって返される値はもちろんコピーされます。信じられない場合は、GetcomputerFishes の戻り値を変更して、this->computerFishes のデータが一貫しているかどうかを確認してください。
GetcomputerFishes
this->computerFishes
アドレスが異なるのはなぜですか?
GetcomputerFishes 関数の戻り値の型は vector<ComputerFish *>、つまり値によって返され、同時に return ステートメントの式は computerFishes であるため、ここでは一時オブジェクトがコピーされ、最初に構築され、その後、一時オブジェクトが返されます (注: コピーの省略により、この一時オブジェクトは実際の実行時にコピーおよび構築されない場合があります)。つまり、返されるオブジェクトは MyClass のメンバー変数ではなく、このメンバー変数をコピーして構築された一時オブジェクトであるため、アドレスが異なります。 (注: 値で呼び出す場合の式の型は右辺値です。ユーザー コードは戻り値のアドレスを直接取得できません。つまり、&x.GetcomputerFishes() はできません。ただし、左辺値に変換してアドレスを取得することはできます。)
vector<ComputerFish *>
computerFishes
&x.GetcomputerFishes()
GetcomputerFishes によって返されるオブジェクトをcomputerFishes にする方法は?
この関数で MyClass のプライベート メンバーのcomputerFishes を返すようにしたい場合は、参照によってそれを返すことができます。
この関数オーバーロードのセットは、const MyClass オブジェクトと非 const MyClass オブジェクトのサポートをそれぞれ提供します。
次に、戻り値を使用して参照変数を初期化できます (非参照変数を初期化し、初期化をコピーすることもできます)。
もちろん、関数の戻り値を介して直接アクセスすることもできます:
もちろん、返されたベクトル値は同じアドレスではなく、返された値はコピーされています。
ポインタと const ポインタを返すことができます。
によって返される値はもちろんコピーされます。信じられない場合は、
GetcomputerFishes
の戻り値を変更して、this->computerFishes
のデータが一貫しているかどうかを確認してください。GetcomputerFishes
関数の戻り値の型はvector<ComputerFish *>
、つまり値によって返され、同時に return ステートメントの式はcomputerFishes
であるため、ここでは一時オブジェクトがコピーされ、最初に構築され、その後、一時オブジェクトが返されます (注: コピーの省略により、この一時オブジェクトは実際の実行時にコピーおよび構築されない場合があります)。つまり、返されるオブジェクトは MyClass のメンバー変数ではなく、このメンバー変数をコピーして構築された一時オブジェクトであるため、アドレスが異なります。 (注: 値で呼び出す場合の式の型は右辺値です。ユーザー コードは戻り値のアドレスを直接取得できません。つまり、&x.GetcomputerFishes()
はできません。ただし、左辺値に変換してアドレスを取得することはできます。)この関数で MyClass のプライベート メンバーのcomputerFishes を返すようにしたい場合は、参照によってそれを返すことができます。
リーリーこの関数オーバーロードのセットは、const MyClass オブジェクトと非 const MyClass オブジェクトのサポートをそれぞれ提供します。
次に、戻り値を使用して参照変数を初期化できます (非参照変数を初期化し、初期化をコピーすることもできます)。
リーリーもちろん、関数の戻り値を介して直接アクセスすることもできます:
リーリー