C ++ Soyut Sınıfı ve Saf Sanal İşlev

Bu eğitimde, örnekler yardımıyla soyut sanal fonksiyonlar ve soyut sınıflar hakkında bilgi edineceğiz.

Saf sanal işlevler hakkında bilgi edinmeden önce şu eğitimleri kontrol ettiğinizden emin olun:

  • C ++ kalıtımı
  • C ++ sanal işlevler

C ++ Saf Sanal İşlevler

Saf sanal işlevler kullanılır

  • temel sınıfta bir işlevin kullanımı yoksa
  • ancak işlev türetilmiş tüm sınıfları tarafından uygulanmalıdır

Bir örnek alalım

Biz elde var, varsayalım Triangle, Squareve Circlegelen sınıfları Shapesınıfı ve tüm bu şekillerin alanını hesaplamak istiyoruz.

Bu durumda, biz adında bir saf sanal fonksiyon oluşturabilir calculateArea()içinde Shape. O saf sanal fonksiyon, tüm türetilmiş sınıfları olduğu için Triangle, Squareve Circleiçermelidir calculateArea()uygulanmasına fonksiyonunu.

Saf bir sanal işlev, işlev gövdesine sahip değildir ve bununla bitmelidir = 0. Örneğin,

 class Shape ( public: // creating a pure virtual function virtual void calculateArea() = 0; );

Not:= 0 sözdizimi biz işlevine 0 atama anlamına gelmez. Saf sanal işlevleri tanımlama şeklimiz bu.

Soyut Sınıf

Saf bir sanal işlev içeren bir sınıf, soyut sınıf olarak bilinir. Yukarıdaki örnekte, sınıf Shapesoyut bir sınıftır.

Soyut bir sınıfın nesnelerini yaratamayız. Bununla birlikte, onlardan sınıflar türetebilir ve veri üyelerini ve üye işlevlerini kullanabiliriz (saf sanal işlevler hariç).

Örnek: C ++ Soyut Sınıfı ve Saf Sanal İşlev

 // C++ program to calculate the area of a square and a circle #include using namespace std; // Abstract class class Shape ( protected: float dimension; public: void getDimension() ( cin>> dimension; ) // pure virtual Function virtual float calculateArea() = 0; ); // Derived class class Square : public Shape ( public: float calculateArea() ( return dimension * dimension; ) ); // Derived class class Circle : public Shape ( public: float calculateArea() ( return 3.14 * dimension * dimension; ) ); int main() ( Square square; Circle circle; cout << "Enter the length of the square: "; square.getDimension(); cout << "Area of square: " << square.calculateArea() << endl; cout << "Enter radius of the circle: "; circle.getDimension(); cout << "Area of circle: " << circle.calculateArea() << endl; return 0; )

Çıktı

 Bir karenin alanını hesaplamak için uzunluğu girin: 4 Kare alanı: 16 Bir dairenin alanını hesaplamak için yarıçapı girin: 5 Daire alanı: 78,5

Bu programda, sınıfın virtual float calculateArea() = 0;içi Shapesaf bir sanal işlevdir.

Bu nedenle calculateArea()her iki türetilmiş sınıfımızda da uygulamasını sağlamalıyız , yoksa bir hata alırız.

Ilginç makaleler...