C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でコンストラクタをコピーする


コピーコンストラクターはコンストラクターの一種です。オブジェクトを作成し、同じクラスのオブジェクトで初期化します。コピーコンストラクターがクラスで定義されていない場合は、コンパイラー自体が定義します。コピーコンストラクタは、ポインタ変数または動的メモリ割り当てを持つクラスの必須事項です。

コピーコンストラクタを示すプログラムは次のとおりです。

#include<iostream>
using namespace std;
class Demo {
   private:
   int num1, num2;
   public:
   Demo(int n1, int n2) {
      num1 = n1;
      num2 = n2;
   }
   Demo(const Demo &n) {
      num1 = n.num1;
      num2 = n.num2;
   }
   void display() {
      cout<<"num1 = "<< num1 <<endl;
      cout<<"num2 = "<< num2 <<endl;
   }
};
int main() {
   Demo obj1(10, 20);
   Demo obj2 = obj1;
   obj1.display();
   obj2.display();
   return 0;
}

出力

num1 = 10
num2 = 20

num1 = 10
num2 = 20

上記のプログラムでは、クラスDemoには、通常のパラメーター化されたコンストラクターとコピーコンストラクターが含まれています。これらに加えて、num1とnum2の値を表示する関数があります。これらは次のように与えられます。

class Demo {
   private:
   int num1, num2;
   public:
   Demo(int n1, int n2) {
      num1 = n1;
      num2 = n2;
   }
   Demo(const Demo &n) {
      num1 = n.num1;
      num2 = n.num2;
   }
   void display() {
      cout<<"num1 = "<< num1 <<endl;
      cout<<"num2 = "<< num2 <<endl;
   }
};

関数main()では、クラスオブジェクトobj1は、パラメーター化されたコンストラクターを使用して初期化されます。オブジェクトobj2は、コピーコンストラクターを使用して初期化され、obj1の値がobj2にコピーされます。最後に、obj1とobj2の値が表示されます。これを以下に示します。

Demo obj1(10, 20);
Demo obj2 = obj1;
obj1.display();
obj2.display();

  1. C++のデストラクタ

    C ++のデストラクタは、オブジェクトを削除するクラスのメンバー関数です。これらは、関数が終了したとき、プログラムが終了したとき、変数の削除が呼び出されたときなど、クラスオブジェクトがスコープ外になったときに呼び出されます。 デストラクタは、引数を取らず、何も返さないため、通常のメンバー関数とは異なります。また、デストラクタの名前はクラスと同じで、名前の前にチルダ(〜)が付いています。 C++でデストラクタをデモンストレーションするプログラムは次のとおりです。 例 #include<iostream> using namespace std; class Demo { &nbs

  2. C++のコンストラクタ

    コンストラクターは、クラスの新しいオブジェクトが作成されたときに実行されるクラスの関数です。コンストラクターはクラスと同じ名前であり、戻り型はなく、voidでさえありません。これらは主に、クラスの変数の初期値を提供するのに役立ちます。 コンストラクターの2つの主なタイプは、デフォルトのコンストラクターとパラメーター化されたコンストラクターです。これらの詳細は次のとおりです。 デフォルトコンストラクタ デフォルトのコンストラクターはパラメーターを取りません。デフォルトのコンストラクターがプログラマーによって明示的に提供されていない場合、コンパイラーは暗黙のデフォルトのコンストラクターを提供し