php_PHP チュートリアルでのコピー コンストラクターと代入演算子のオーバーロード

WBOY
リリース: 2016-07-21 15:17:07
オリジナル
818 人が閲覧しました

オブジェクトの割り当てとコピー: 割り当て: "= 演算子によってオーバーロードされます
User a(10),b;
b = a;
コピー: コピー コンストラクターを呼び出します
User b;
User a(b);
or
User a = b;//User a(b); と同等
と代入の違いは、代入は既存のオブジェクト (割り当てられたオブジェクトは実装および定義されている) に値を割り当てることであるのに対し、コピーは作成することです。オブジェクトを最初から作成する 新しいオブジェクトを作成し、既存のオブジェクトと同一にします。
浅いコピーと深いコピー: オブジェクト内にポインター メンバーが存在する場合、そのポインター メンバーのアドレスのみが新しく作成されたオブジェクトにコピーされるため、両方のオブジェクトのポインター メンバーは同じメモリ領域を指します。リリース中に繰り返しリリースが発生します。 コピー コンストラクターを手動で定義する必要があります。コンストラクターでは、異なるオブジェクトのポインター メンバーが異なるメモリ領域を指すように新しいメモリが割り当てられます。
コピー コンストラクターが使用される場合の 3 つの状況: 1. 新しいオブジェクトを作成し、それを同じ型の別のオブジェクトで初期化する必要がある。 2. 関数のパラメーターがクラスのオブジェクトである場合、関数を呼び出すときに実パラメータをコピーし、実パラメータに従って仮パラメータをコピーします。システムはコピー コンストラクタを呼び出すことによって実装されます。 3. 関数の戻り値はクラスのオブジェクトです。関数呼び出しでは、関数内のオブジェクトを一時オブジェクトにコピーし、呼び出しポイントの関数に渡す必要があります。

コードをコピー コードは次のとおりです:

User getUser()
{
return temp;
}
int main()
{
User user = getUser();// getUser( );
}

getUser() 関数の呼び出しが終了すると、getUser で作成されたオブジェクト temp のライフサイクルが終了する (破棄される) ため、return ステートメントを実行するときに、temp を main に戻すのではなく、 、User クラス Copy コンストラクターを呼び出し、temp に従って新しいオブジェクトをコピーし、それをユーザーに割り当てます。

http://www.bkjia.com/PHPjc/325801.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/325801.html技術記事オブジェクトの代入とコピー: 代入: オーバーロード User a(10), b = a; コピー: User a(b) または User a = b; と同等です。 );...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!