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

C ++の純粋仮想関数が0で初期化されるのはなぜですか?


これは単なる構文であり、「関数は純粋仮想である」と言っているだけです。

純粋仮想関数は、C ++の仮想関数であり、関数定義を記述する必要はなく、宣言するだけで済みます。宣言に0を割り当てることで宣言されます。

これは、C++プログラムの純粋仮想関数の例です

サンプルコード

#include<iostream>
using namespace std;
class B {
   public: virtual void s() = 0; // Pure Virtual Function
};

class D:public B {
   public: void s() {
      cout << " Virtual Function in Derived class\n";
   }
};

int main() {
   B *b;
   D dobj;
   b = &dobj;
   b->s();
}

出力

Virtual Function in Derived class

  1. C ++のswap()関数

    swap()関数は、2つの数値を交換するために使用されます。この関数を使用すると、2つの数値を交換するために3番目の変数は必要ありません。 C ++言語でのswap()の構文は次のとおりです。 void swap(int variable_name1, int variable_name2); 変数に値を割り当てるか、ユーザー定義の値を渡すと、変数の値が交換されますが、変数の値は実際の場所では同じままです。 これがC++言語でのswap()の例です 例 #include <bits/stdc++.h> using namespace std; int main() { &nb

  2. C ++のコンストラクター内で仮想関数を呼び出す方法は?

    コンストラクタまたはデストラクタから仮想関数を呼び出すことは危険であり、可能な限り避ける必要があります。これは、呼び出す仮想関数が派生クラスではなく基本クラスから呼び出されるためです。 C ++では、すべてのクラスが独自の構造に入る前に、そのバージョンの仮想メソッドテーブルを構築します。したがって、コンストラクターで仮想メソッドを呼び出すと、Baseクラスの仮想メソッドが呼び出されます。または、そのレベルで実装がない場合は、純粋仮想メソッド呼び出しが生成されます。 Baseが完全に構築されると、コンパイラはDerivedクラスの構築を開始し、Derivedクラスの実装を指すようにメソッドポイ