C ++でコピーコンストラクタを実装する方法は?



コンストラクターを理解することは、多くの人にとって謎でした。この記事は、C ++でのコピーコンストラクターの概念をわかりやすく説明するのに役立ちます。

理解 コンストラクター 多くの人にとって謎でした。この記事は、C ++でのコピーコンストラクターの概念をわかりやすく説明するのに役立ちます。この記事では、次のポイントについて説明します。

それでは始めましょうC ++でのコピーコンストラクタに関するこの記事で





コピーコンストラクターは、同じクラスの別のオブジェクトを使用してクラスのオブジェクトを初期化するコンストラクターです。

構文:



値を一定にし、コードのどこかで変更されないようにするため、キーワードconstがあります。デフォルトのコンストラクターと同様に、コピーコンストラクターもコンパイラーによって提供されます。これは、デフォルトのコピーコンストラクタと呼ばれます。コピーコンストラクターはプライベートにすることができます。コピーコンストラクタをプライベートにすると、クラスのオブジェクトをコピーできません。

これがサンプルコードです

#include using namespace std class test {private:int x public:test(int x1){x = x1} test(const test&t2){x = t2.x} int getX(){return x}} int main() {test t1(7)//通常のコンストラクターはここで呼び出されますtest t2 = t1 //コピーコンストラクターはここで呼び出されますcout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

出力:



出力-C ++のコピーコンストラクタ-Edureka

説明

上記のプログラムは、コピーコンストラクタの基本的なデモです。 xと呼ばれるint型のプライベートデータメンバーを使用したクラステストがあります。次に、変数xに7を割り当てるパラメーター化されたコンストラクターがあります。 t2の値をt1の値でインスタンス化するコピーコンストラクターがあります。 t1の値を保持し、xに割り当てられたt2のアドレスが送信されます。 xの値を返すget関数があります。

main関数には、t1と呼ばれるクラステストのオブジェクトがあります。このオブジェクトに関連付けられた値があります。これはパラメーターです。 main関数には、t2と呼ばれるクラステストの別のオブジェクトがあります。これはt1変数を使用して初期化され、コピーコンストラクターがここで呼び出されます。最後に、get関数がt1とt2に関して呼び出され、xの値が取得されます。

初心者向けのservicenowチュートリアルpdf

タイプ

コピーコンストラクタには2つのタイプがあります。
⦁浅いコピーコンストラクタ
⦁ディープコピーコンストラクタ

C ++でのコピーコンストラクタに関するこの記事に進む

浅いコピーコンストラクター:

浅いコピーコンストラクターは、デフォルトのコピーコンストラクターです。

例:

2人が同時にデータベースにアクセスし、2つの異なるシステムで値を変更します。その後、データベースに変更を加えると、これらの変更の両方がデータベースに表示されます。両方のオブジェクトが同じメモリ位置を指します。これは浅いコピーコンストラクタです。これは主に、デフォルトのコピーコンストラクターを使用しているときに発生します。コードの例を次に示します。浅いコピーコンストラクター:

#include using namespace std class test {public:int y、z test(int y1、int z1){y = y1 z = z1}} int main(){test a(7,13)cout<<'the sum is: '<< a.y+a.z return 1 } 

出力:

説明:

上記のコードでは、コンパイラーが提供するデフォルトのコピーコンストラクターを使用しています。したがって、これは浅いコピーコンストラクタです。

C ++でのコピーコンストラクタに関するこの記事に進む

ディープコピーコンストラクタ

ディープコピーコンストラクターは、ユーザー定義のコピーコンストラクターです。
例えば:
2人がプレゼンテーションを行う必要があり、両方が同じソースからコピーする場合、コピーは別々になります。したがって、変更を加えても、他のコピーだけが影響を受けることはありません。これはディープコピーコンストラクタです。両方のオブジェクトが異なるメモリ位置を指しているため、一方の変更が他方に影響を与えることはありません。メモリは動的に割り当てられます。

コードの例を次に示します。ディープコピーコンストラクター:

#include using namespace std class test {private:int x public:test(int x1){x = x1} test(const test&t2){x = t2.x} int getX(){return x}} int main() {test t1(7)//通常のコンストラクターはここで呼び出されますtest t2 = t1 //コピーコンストラクターはここで呼び出されますcout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

出力:

説明

これは上記で使用したものと同じコードであり、同様の出力が得られます。これはユーザー定義のコピーコンストラクターであるため、ディープコピーコンストラクターです。

これで、「C ++でのコピーコンストラクタ」に関するこの記事は終わりです。詳細を知りたい場合は、 信頼できるオンライン学習会社であるEdurekaによる。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Hibernate&SpringなどのさまざまなJavaフレームワークに加えて、コアJavaコンセプトと高度なJavaコンセプトの両方についてトレーニングするように設計されています。

質問がありますか?このブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。

Javaで一緒に拡張および実装します