logo

C++ コンストラクター

C++ では、コンストラクターはオブジェクトの作成時に自動的に呼び出される特別なメソッドです。一般に、新しいオブジェクトのデータ メンバーを初期化するために使用されます。 C++ のコンストラクターは、クラスまたは構造体と同じ名前を持ちます。

簡単に言うと、C++ でオブジェクトが作成されると、コンストラクターと呼ばれる特定のプロシージャが自動的に呼び出されます。一般に、新しいもののデータ メンバーを作成するために使用されます。 C++ では、クラス名または構造体名がコンストラクター名としても機能します。オブジェクトが完成すると、コンストラクターが呼び出されます。値を作成したり、モノにデータを与えたりするため、コンストラクターとして知られています。

コンストラクターのプロトタイプは次のようになります。

 (list-of-parameters); 

次の構文は、クラスのコンストラクターを定義するために使用されます。

 (list-of-parameters) { // constructor definition } 

次の構文は、クラスの外部でコンストラクターを定義するために使用されます。

 : : (list-of-parameters){ // constructor definition} 

コンストラクターには戻り値がないため、戻り値の型がありません。

C++ には 2 種類のコンストラクターがあります。

  • デフォルトのコンストラクター
  • パラメータ化されたコンストラクタ

C++ のデフォルト コンストラクター

引数のないコンストラクターは、デフォルト コンストラクターと呼ばれます。オブジェクトの作成時に呼び出されます。

C++ のデフォルト コンストラクターの簡単な例を見てみましょう。

 #include using namespace std; class Employee { public: Employee() { cout&lt;<'default constructor invoked'<<endl; } }; int main(void) { employee e1; creating an object of e2; return 0; < pre> <p> <strong>Output:</strong> </p> <pre>Default Constructor Invoked Default Constructor Invoked </pre> <h2>C++ Parameterized Constructor</h2> <p>A constructor which has parameters is called parameterized constructor. It is used to provide different values to distinct objects.</p> <p>Let&apos;s see the simple example of C++ Parameterized Constructor.</p> <pre> #include using namespace std; class Employee { public: int id;//data member (also instance variable) string name;//data member(also instance variable) float salary; Employee(int i, string n, float s) { id = i; name = n; salary = s; } void display() { cout&lt; <id<<' '<<name<<' '<<salary<<endl; } }; int main(void) { employee e1="Employee(101," 'sonoo', 890000); creating an object of e2="Employee(102," 'nakul', 59000); e1.display(); e2.display(); return 0; < pre> <p> <strong>Output:</strong> </p> <pre>101 Sonoo 890000 102 Nakul 59000 </pre> <h2>What distinguishes constructors from a typical member function?</h2> <ol class="points"> <li>Constructor&apos;s name is the same as the class&apos;s</li> <li>Default There isn&apos;t an input argument for constructors. However, input arguments are available for copy and parameterized constructors.</li> <li>There is no return type for constructors.</li> <li>An object&apos;s constructor is invoked automatically upon creation.</li> <li>It must be shown in the classroom&apos;s open area.</li> <li>The C++ compiler creates a default constructor for the object if a constructor is not specified (expects any parameters and has an empty body).</li> </ol> <p>By using a practical example, let&apos;s learn about the various constructor types in C++. Imagine you visited a store to purchase a marker. What are your alternatives if you want to buy a marker? For the first one, you ask a store to give you a marker, given that you didn&apos;t specify the brand name or colour of the marker you wanted, simply asking for one amount to a request. So, when we just said, &apos;I just need a marker,&apos; he would hand us whatever the most popular marker was in the market or his store. The default constructor is exactly what it sounds like! The second approach is to go into a store and specify that you want a red marker of the XYZ brand. He will give you that marker since you have brought up the subject. The parameters have been set in this instance thus. And a parameterized constructor is exactly what it sounds like! The third one requires you to visit a store and declare that you want a marker that looks like this (a physical marker on your hand). The shopkeeper will thus notice that marker. He will provide you with a new marker when you say all right. Therefore, make a copy of that marker. And that is what a copy constructor does!</p> <h2>What are the characteristics of a constructor?</h2> <ol class="points"> <li>The constructor has the same name as the class it belongs to.</li> <li>Although it is possible, constructors are typically declared in the class&apos;s public section. However, this is not a must.</li> <li>Because constructors don&apos;t return values, they lack a return type.</li> <li>When we create a class object, the constructor is immediately invoked.</li> <li>Overloaded constructors are possible.</li> <li>Declaring a constructor virtual is not permitted.</li> <li>One cannot inherit a constructor.</li> <li>Constructor addresses cannot be referenced to.</li> <li>When allocating memory, the constructor makes implicit calls to the new and delete operators.</li> </ol> <h2>What is a copy constructor?</h2> <p>A member function known as a copy constructor initializes an item using another object from the same class-an in-depth discussion on Copy Constructors.</p> <p>Every time we specify one or more non-default constructors (with parameters) for a class, we also need to include a default constructor (without parameters), as the compiler won&apos;t supply one in this circumstance. The best practice is to always declare a default constructor, even though it is not required.</p> <p>A reference to an object belonging to the same class is required by the copy constructor.</p> <pre> Sample(Sample &amp;t) { id=t.id; } </pre> <h2>What is a destructor in C++?</h2> <p>An equivalent special member function to a constructor is a destructor. The constructor creates class objects, which are destroyed by the destructor. The word &apos;destructor,&apos; followed by the tilde () symbol, is the same as the class name. You can only define one destructor at a time. One method of destroying an object made by a constructor is to use a destructor. Destructors cannot be overloaded as a result. Destructors don&apos;t take any arguments and don&apos;t give anything back. As soon as the item leaves the scope, it is immediately called. Destructors free up the memory used by the objects the constructor generated. Destructor reverses the process of creating things by destroying them.</p> <p>The language used to define the class&apos;s destructor</p> <pre> ~ () { } </pre> <p>The language used to define the class&apos;s destructor outside of it</p> <pre> : : ~ (){} </pre> <hr></id<<'></pre></'default>

C++ パラメーター化されたコンストラクター

パラメーターを持つコンストラクターは、パラメーター化されたコンストラクターと呼ばれます。これは、個別のオブジェクトに異なる値を提供するために使用されます。

C++ パラメーター化コンストラクターの簡単な例を見てみましょう。

 #include using namespace std; class Employee { public: int id;//data member (also instance variable) string name;//data member(also instance variable) float salary; Employee(int i, string n, float s) { id = i; name = n; salary = s; } void display() { cout&lt; <id<<\' \'<<name<<\' \'<<salary<<endl; } }; int main(void) { employee e1="Employee(101," \'sonoo\', 890000); creating an object of e2="Employee(102," \'nakul\', 59000); e1.display(); e2.display(); return 0; < pre> <p> <strong>Output:</strong> </p> <pre>101 Sonoo 890000 102 Nakul 59000 </pre> <h2>What distinguishes constructors from a typical member function?</h2> <ol class="points"> <li>Constructor&apos;s name is the same as the class&apos;s</li> <li>Default There isn&apos;t an input argument for constructors. However, input arguments are available for copy and parameterized constructors.</li> <li>There is no return type for constructors.</li> <li>An object&apos;s constructor is invoked automatically upon creation.</li> <li>It must be shown in the classroom&apos;s open area.</li> <li>The C++ compiler creates a default constructor for the object if a constructor is not specified (expects any parameters and has an empty body).</li> </ol> <p>By using a practical example, let&apos;s learn about the various constructor types in C++. Imagine you visited a store to purchase a marker. What are your alternatives if you want to buy a marker? For the first one, you ask a store to give you a marker, given that you didn&apos;t specify the brand name or colour of the marker you wanted, simply asking for one amount to a request. So, when we just said, &apos;I just need a marker,&apos; he would hand us whatever the most popular marker was in the market or his store. The default constructor is exactly what it sounds like! The second approach is to go into a store and specify that you want a red marker of the XYZ brand. He will give you that marker since you have brought up the subject. The parameters have been set in this instance thus. And a parameterized constructor is exactly what it sounds like! The third one requires you to visit a store and declare that you want a marker that looks like this (a physical marker on your hand). The shopkeeper will thus notice that marker. He will provide you with a new marker when you say all right. Therefore, make a copy of that marker. And that is what a copy constructor does!</p> <h2>What are the characteristics of a constructor?</h2> <ol class="points"> <li>The constructor has the same name as the class it belongs to.</li> <li>Although it is possible, constructors are typically declared in the class&apos;s public section. However, this is not a must.</li> <li>Because constructors don&apos;t return values, they lack a return type.</li> <li>When we create a class object, the constructor is immediately invoked.</li> <li>Overloaded constructors are possible.</li> <li>Declaring a constructor virtual is not permitted.</li> <li>One cannot inherit a constructor.</li> <li>Constructor addresses cannot be referenced to.</li> <li>When allocating memory, the constructor makes implicit calls to the new and delete operators.</li> </ol> <h2>What is a copy constructor?</h2> <p>A member function known as a copy constructor initializes an item using another object from the same class-an in-depth discussion on Copy Constructors.</p> <p>Every time we specify one or more non-default constructors (with parameters) for a class, we also need to include a default constructor (without parameters), as the compiler won&apos;t supply one in this circumstance. The best practice is to always declare a default constructor, even though it is not required.</p> <p>A reference to an object belonging to the same class is required by the copy constructor.</p> <pre> Sample(Sample &amp;t) { id=t.id; } </pre> <h2>What is a destructor in C++?</h2> <p>An equivalent special member function to a constructor is a destructor. The constructor creates class objects, which are destroyed by the destructor. The word &apos;destructor,&apos; followed by the tilde () symbol, is the same as the class name. You can only define one destructor at a time. One method of destroying an object made by a constructor is to use a destructor. Destructors cannot be overloaded as a result. Destructors don&apos;t take any arguments and don&apos;t give anything back. As soon as the item leaves the scope, it is immediately called. Destructors free up the memory used by the objects the constructor generated. Destructor reverses the process of creating things by destroying them.</p> <p>The language used to define the class&apos;s destructor</p> <pre> ~ () { } </pre> <p>The language used to define the class&apos;s destructor outside of it</p> <pre> : : ~ (){} </pre> <hr></id<<\'>

コンストラクターと一般的なメンバー関数の違いは何ですか?

  1. コンストラクターの名前はクラスの名前と同じです
  2. デフォルト コンストラクターの入力引数はありません。ただし、入力引数はコピーおよびパラメーター化されたコンストラクターで使用できます。
  3. コンストラクターには戻り値の型はありません。
  4. オブジェクトのコンストラクターは、作成時に自動的に呼び出されます。
  5. 教室のオープンエリアに展示する必要があります。
  6. コンストラクターが指定されていない場合 (パラメーターが必要で、本体が空である場合)、C++ コンパイラーはオブジェクトのデフォルトのコンストラクターを作成します。

実践的な例を使用して、C++ のさまざまなコンストラクターの型について学びましょう。マーカーを購入するために店を訪れたと想像してください。マーカーを購入したい場合は、どのような選択肢がありますか? 1 つ目では、希望するマーカーのブランド名や色を指定しなかったとして、単純に 1 つの金額を要求するだけで、マーカーをくれるように店に依頼します。それで、私たちが「マーカーが必要なだけです」と言うと、彼は市場や彼の店で最も人気のあるマーカーを何でも私たちに渡しました。デフォルトのコンストラクターはまさにその名の通りです。 2 番目のアプローチは、店舗に入り、XYZ ブランドの赤いマーカーが欲しいと指定することです。あなたがその話題を持ち出したので、彼はあなたにそのマーカーをくれるでしょう。このインスタンスではパラメータがこのように設定されています。パラメーター化されたコンストラクターはまさにその名の通りです。 3 番目の方法では、店舗を訪れ、このようなマーカー (手に物理的なマーカー) が欲しいと宣言する必要があります。したがって、店主はそのマーカーに気づくでしょう。あなたが「大丈夫」と言うと、彼はあなたに新しいマーカーを提供します。したがって、そのマーカーのコピーを作成します。それがコピー コンストラクターの機能です。

コンストラクターの特徴は何ですか?

  1. コンストラクターには、それが属するクラスと同じ名前が付けられます。
  2. 可能ではありますが、コンストラクターは通常、クラスの public セクションで宣言されます。ただし、これは必須ではありません。
  3. コンストラクターは値を返さないため、戻り値の型がありません。
  4. クラス オブジェクトを作成すると、コンストラクターがすぐに呼び出されます。
  5. コンストラクターのオーバーロードが可能です。
  6. コンストラクター virtual を宣言することは許可されていません。
  7. コンストラクターを継承することはできません。
  8. コンストラクタアドレスは参照できません。
  9. メモリを割り当てるとき、コンストラクターは new 演算子と delete 演算子を暗黙的に呼び出します。

コピーコンストラクターとは何ですか?

コピー コンストラクターとして知られるメンバー関数は、同じクラスの別のオブジェクトを使用して項目を初期化します。コピー コンストラクターについては詳しく説明します。

クラスに 1 つ以上のデフォルト以外のコンストラクター (パラメーター付き) を指定するたびに、この状況ではコンパイラーがデフォルトのコンストラクター (パラメーターなし) を提供しないため、デフォルトのコンストラクター (パラメーターなし) も含める必要があります。ベスト プラクティスは、必須ではない場合でも、常にデフォルトのコンストラクターを宣言することです。

コピー コンストラクターには、同じクラスに属するオブジェクトへの参照が必要です。

 Sample(Sample &amp;t) { id=t.id; } 

C++ のデストラクターとは何ですか?

コンストラクターと同等の特殊メンバー関数はデストラクターです。コンストラクターはクラス オブジェクトを作成しますが、これらのオブジェクトはデストラクターによって破棄されます。 「デストラクター」という単語の後にチルダ () 記号が続いたものは、クラス名と同じです。一度に定義できるデストラクターは 1 つだけです。コンストラクターによって作成されたオブジェクトを破棄する 1 つの方法は、デストラクターを使用することです。結果として、デストラクターをオーバーロードすることはできません。デストラクターは引数を受け取らず、何も返しません。項目がスコープから出るとすぐに呼び出されます。デストラクターは、コンストラクターが生成したオブジェクトによって使用されていたメモリを解放します。デストラクターは、物を破壊することによって、物を作成するプロセスを逆にします。

クラスのデストラクターを定義するために使用される言語

 ~ () { } 

クラスの外部でクラスのデストラクターを定義するために使用される言語

 : : ~ (){}