コピーコンストラクタと代入演算子の違いは何ですか

目次:

Anonim

NS 主な違い コピーコンストラクタと代入演算子の間は コピーコンストラクターは、元のオブジェクトの値に影響を与えることなく、既存のオブジェクトのコピーを作成するのに役立つコンストラクターの一種です。一方、代入演算子は、プログラム内の変数に新しい値を割り当てるのに役立つ演算子です。

コンストラクターは、オブジェクトの作成時にオブジェクトを初期化するのに役立つ特別なメソッドです。クラス名と同じ名前で、戻りタイプはありません。プログラマーは、クラス内のインスタンス変数に初期値を与えるコンストラクターを作成できます。プログラムにコンストラクターがない場合は、デフォルトのコンストラクターが呼び出されます。コピーコンストラクターは、既存のオブジェクトのコピーを作成するのに役立つコンストラクターの一種です。一方、代入演算子は、変数に新しい値を割り当てるのに役立ちます。

コンストラクター、コピーコンストラクター、代入演算子、変数

コピーコンストラクタとは

プログラミングでは、元のオブジェクトに影響を与えずに、オブジェクトの個別のコピーを作成する必要がある場合があります。コピーコンストラクタは、このような状況で役立ちます。これにより、同じクラスの既存のオブジェクトのレプリケーションを作成できます。以下の例を参照してください。

図1:コピーコンストラクターを使用したプログラム

クラスTriangleには、baseとheightという2つのインスタンス変数があります。 8行目には、パラメーター化されたコンストラクターがあります。 2つの引数が必要です。これらの値は、インスタンス変数のbaseとheightに割り当てられます。 13行目には、コピーコンストラクターがあります。 Triangle型の引数を取ります。新しいオブジェクトのベース値がインスタンス変数baseに割り当てられます。同様に、新しいオブジェクトの高さの値は、インスタンス変数の高さに割り当てられます。さらに、面積を計算して返すためのcalAreaというメソッドがあります。

mainメソッドでは、t1とt2はTriangleオブジェクトです。オブジェクトt1は、t2オブジェクトの作成時に渡されます。コピーコンストラクタは、t2オブジェクトを作成するために呼び出されます。したがって、t2オブジェクトの底辺と高さは、t1オブジェクトの底辺と高さと同じです。最後に、両方のオブジェクトは同じ領域を持っています。

代入演算子とは

代入演算子は、変数に新しい値を割り当てるのに役立ちます。代入演算子は「=」です。 c = a + bのようなステートメントがある場合。 「a」と「b」の合計が変数「c」に割り当てられます。

図2:代入演算子を使用したプログラム

クラスNumberには、numというインスタンス変数があります。 7行目にはパラメーターコンストラクターはありません。ただし、9行目にはパラメーター化されたコンストラクターがあります。引数を取り、代入演算子を使用してインスタンス変数に割り当てます。 12行目には、数値を表示するためのdisplayというメソッドがあります。 mainメソッドでは、num1とnum2はNumber型の2つのオブジェクトです。 num1とnum2を出力すると、それらのオブジェクトへの参照が得られます。 num3のタイプはNumberです。 24行目では、代入演算子を使用してnum1がnum3に割り当てられています。したがって、num3はnum1オブジェクトを参照しています。したがって、num3を出力すると、num1の参照が得られます。

代入演算子とそのバリエーションは次のとおりです。

オペレーター

機能性

=

右のオペランドを左のオペランドに割り当てます

z = x + y

+=

右のオペランドを左のオペランドに追加し、結果を左のオペランドに割り当てます

z + = yはz = z + yと同等です

– =

左のオペランドから右のオペランドを引き、その結果を左のオペランドに割り当てます。

z- = yはと同等です

z = z -y

* =

右のオペランドに左のオペランドを掛けて、その結果を左のオペランドに割り当てます。

z * = yはと同等です

z = z * y

/=

左のオペランドを右のオペランドで除算し、答えを左のオペランドに割り当てます。

z / = yはと同等です

z = z / y

%=

2つのオペランドのモジュラスを取り、その答えを左のオペランドに割り当てます。

z%= yはと同等です

z = z%y

<<=

左シフトAND代入演算子

z << 5はと同等です

z = z << 5

>>=

右シフトAND代入演算子

z >> 5はと同等です

z = z >> 5

&=

ビットごとのAND代入演算子

z&= 5はと同等です

z = z&5

^=

ビット単位の排他的論理和と代入演算子

z ^ = 5はと同等です

z = z ^ 5

|=

ビット単位の包括的ORおよび代入演算子

z | = 5はz = z | 5と同等です

コピーコンストラクタと代入演算子の違い

意味

コピーコンストラクターは、既存のオブジェクトのコピーとして新しいオブジェクトを作成するための特別なコンストラクターです。対照的に、代入演算子は、変数に新しい値を割り当てるために使用される演算子です。これらの定義は、コピーコンストラクタと代入演算子の基本的な違いを説明しています。

オブジェクトの機能

オブジェクトの機能も、コピーコンストラクタと代入演算子の大きな違いです。コピーコンストラクターは、既存のオブジェクトで新しいオブジェクトを初期化しますが、代入演算子は、あるオブジェクトの値を、すでに存在する別のオブジェクトに割り当てます。

使用法

コピーコンストラクターは既存のオブジェクトのコピーを作成するのに役立ち、代入演算子は変数に新しい値を割り当てるのに役立ちます。これは、コピーコンストラクタと代入演算子のもう1つの違いです。

結論

コピーコンストラクターと代入演算子の違いは、コピーコンストラクターは元のオブジェクトの値に影響を与えずに既存のオブジェクトのコピーを作成するのに役立つコンストラクターの一種であるのに対し、代入演算子は新しい値をに割り当てるのに役立つ演算子であるということです。プログラム内の変数。

リファレンス:

1.タクール、ディネッシュ。 「Javaの例でコンストラクタをコピーします。」コンピュータノート、ここから入手できます。

コピーコンストラクタと代入演算子の違いは何ですか