Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชันเสมือนแท้และคลาสนามธรรมใน C++


ฟังก์ชันเสมือนล้วนเป็นฟังก์ชันเสมือนใน C++ ซึ่งเราไม่จำเป็นต้องเขียนคำจำกัดความของฟังก์ชันใดๆ และมีเพียงเราเท่านั้นที่ต้องประกาศ มันถูกประกาศโดยการกำหนด 0 ในการประกาศ

คลาสนามธรรมคือคลาสใน C++ ซึ่งมีฟังก์ชันเสมือนบริสุทธิ์อย่างน้อยหนึ่งฟังก์ชัน

  • คลาสนามธรรมสามารถมีฟังก์ชันและตัวแปรปกติพร้อมกับฟังก์ชันเสมือนที่บริสุทธิ์

  • ไม่สามารถสร้างคลาสนามธรรมได้ แต่สามารถสร้างพอยน์เตอร์และการอ้างอิงประเภทคลาสนามธรรมได้

  • คลาสนามธรรมส่วนใหญ่จะใช้สำหรับ Upcasting เพื่อให้คลาสที่ได้รับสามารถใช้อินเทอร์เฟซได้

  • หากคลาสนามธรรมได้รับคลาส พวกเขาต้องใช้ฟังก์ชันเสมือนล้วนๆ ทั้งหมด มิฉะนั้นจะกลายเป็นคลาสนามธรรมด้วย

  • เราไม่สามารถสร้างวัตถุของคลาสนามธรรมได้ในขณะที่เราจองสล็อตสำหรับฟังก์ชันเสมือนที่แท้จริงใน Vtable แต่เราไม่ได้ใส่ที่อยู่ใดๆ ดังนั้น Vtable จะยังคงไม่สมบูรณ์

โค้ดตัวอย่าง

#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