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

C++での仮想関数と純粋仮想関数の違い


次の表に、仮想機能と純粋仮想機能の違いを示します。

仮想関数
純粋仮想関数
仮想関数の定義はクラスにあります。
純粋仮想関数には定義がありません。
宣言:virtual funct_name(parameter_list){。 。 。 。 。};
宣言:virtual funct_name(parameter_list)=0;
派生クラスの概念はありません。
クラスに少なくとも1つの純粋仮想関数が含まれている場合、そのクラスは抽象として宣言されます。
必要に応じて、基本クラスは仮想関数をオーバーライドできます。
純粋仮想関数の場合、派生クラスは純粋仮想関数を確実にオーバーライドする必要があります。

仮想関数

サンプルコード

#include <iostream>
using namespace std;
class B {
   public:
      virtual void s() //virtual function {
         cout<<" In Base \n";
      }
};

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

int main(void) {
   D d; // An object of class D
   B *b= &d;// A pointer of type B* pointing to d
   b->s();// prints"D::s() called"
   return 0;
}
と呼ばれる"D::s()を出力します

出力

In Derived

純粋仮想関数

サンプルコード

#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; // An object of class D
   b = &dobj;// A pointer of type B* pointing to dobj
   b->s();// prints"D::s() called"
}
と呼ばれる"D::s()を出力します

出力

Virtual Function in Derived class

  1. 新しい演算子とC++の新しい演算子の違いは?

    C ++では、新しいオブジェクトを作成するときに、メモリにメモリブロックを作成する必要があります。次に、コンストラクタを呼び出してメモリブロックを初期化します。 newキーワードを使用してメモリ要素を作成できます。この新しいオペレーターは、2つの連続したタスクを実行しています。ただし、演​​算子newは、メモリ空間を作成するだけです。 新しいキーワード new演算子は特殊なタイプの演算子であり、ヒープセクションでのメモリ割り当ての要求を示します。十分なメモリが利用可能な場合、新しいオペレータのみがメモリをポインタ変数に初期化します。通常のnewkeywordを使用してオブジェクトを作成すると

  2. C#でのメソッドと関数の違い

    メソッドと関数はC#でも同じです。 ただし、メソッドはC#で使用され、指定されたクラスを介して動作する関数です。メソッドは、一緒にタスクを実行するステートメントのグループです。すべてのC#プログラムには、Mainという名前のメソッドを持つクラスが少なくとも1つあります。 以下は、C#でメソッドを作成する方法を示す簡単な例です。 例 class NumberManipulator {    public int FindMax(int num1, int num2) {       /* local variable declaration