C++虚関数の詳細と簡単な例

1404 ワード

C++虚関数の詳細
虚関数の使用と純虚関数の使用.
虚関数は、ベースクラスで定義され、サブクラスがこの関数を書き換えた後、ベースクラスのポインタがサブクラスのオブジェクトを指し、この関数を呼び出すことができます.この関数は、このサブクラスの書き換え機能を同時に保持します.
純虚関数は、ベースクラスで定義する必要がなく、宣言するだけでよい.そして、純虚関数であるため、ベースクラスを生成できないオブジェクトであるが、ベースクラスのポインタを生成することができる.
純虚関数と虚関数の最も主要な違いは,純虚関数が存在するベースクラスはオブジェクトを生成できないが,虚関数のベースクラスはオブジェクトを生成できることである.

// pointers to base class 
#include  
using namespace std; 
class Polygon { 
 protected: 
  int width, height; 
 public: 
  void set_values (int a, int b) 
   { width=a; height=b; } 
  virtual int area(){ 
    return 0; 
  } 
}; 
 
class Rectangle: public Polygon { 
 public: 
  int area() 
   { return width*height; } 
}; 
 
class Triangle: public Polygon { 
 public: 
  int area() 
   { return width*height/2; } 
}; 
 
int main(){ 
  Polygon *p1,*p2; 
  Rectangle rec; 
  Triangle tri; 
  p1 = &rec; 
  p2 = &tri; 
  p1->set_values(1,2); 
  p2->set_values(2,4); 
  cout << rec.area() << endl; 
  cout << tri.area() << endl; 
  cout << p1->area() << endl; 
  cout << p2->area() << endl; 
  return 0; 
} 

読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!