C++でのコンストラクターと代入演算子のコピー
コピーコンストラクタと代入演算子は、あるオブジェクトを別のオブジェクトに初期化するために使用されます。それらの主な違いは、コピーコンストラクタが新しいオブジェクト用に個別のメモリブロックを作成することです。ただし、代入演算子は新しいメモリ空間を作成しません。参照変数を使用して、前のメモリブロックを指します。
コピーコンストラクタ(構文)
classname (const classname &obj) { // body of constructor }
代入演算子(構文)
classname Ob1, Ob2; Ob2 = Ob1;
コピーコンストラクタと代入演算子の詳細な違いを見てみましょう。
コピーコンストラクタ | 代入演算子 |
---|---|
Copyコンストラクターは基本的にオーバーロードされたコンストラクターです | 代入演算子は基本的に演算子です。 |
これにより、新しいオブジェクトが既存のオブジェクトで初期化されます | これにより、あるオブジェクトの値が、両方ともすでに存在する別のオブジェクトに割り当てられます。 |
コピーコンストラクタは、既存のオブジェクトを使用して新しいオブジェクトを作成するときに使用されます | この演算子は、既存のオブジェクトを新しいオブジェクトに割り当てるときに使用されます。 |
両方のオブジェクトが別々のメモリ位置を使用します。 | 1つのメモリ位置が使用されていますが、異なる参照変数が同じ位置を指しています。 |
クラスでコピーコンストラクターが定義されていない場合、コンパイラーはコピーコンストラクターを提供します。 | 代入演算子がオーバーロードされていない場合、ビット単位のコピーが作成されます |
-
C ++のdelete()演算子
削除演算子は、メモリの割り当てを解除するために使用されます。ユーザーには、この削除演算子によって作成されたポインター変数の割り当てを解除する権限があります。 C++言語での削除演算子の構文は次のとおりです delete pointer_variable; 割り当てられたメモリのブロックを削除する構文は次のとおりです。 delete[ ] pointer_variable; これは、C++言語での削除演算子の例です 例 #include <iostream> using namespace std; int main () { int *ptr1 =
-
C++でコンストラクタをコピーする
コピーコンストラクターはコンストラクターの一種です。オブジェクトを作成し、同じクラスのオブジェクトで初期化します。コピーコンストラクターがクラスで定義されていない場合は、コンパイラー自体が定義します。コピーコンストラクタは、ポインタ変数または動的メモリ割り当てを持つクラスの必須事項です。 コピーコンストラクタを示すプログラムは次のとおりです。 例 #include<iostream> using namespace std; class Demo { private: int num1, num2; p