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

ฟังก์ชันเสมือนในคลาสลูก (Virtual functions in derived classes) ใน C++


ฟังก์ชันเสมือน (Virtual functions) ใน C++ ใช้เพื่อสร้างรายการของพอยน์เตอร์คลาสฐานและเรียกเมธอดของคลาสลูกใดๆ ได้โดยไม่ต้องรู้ว่าออบเจ็กต์คลาสลูกเป็นประเภทใด ฟังก์ชันเสมือนจะถูกแก้ไข (resolved) ภายหลัง ในขณะรันไทม์ (runtime)

หากฟังก์ชันเสมือนในคลาสฐานถูกประกาศเป็นฟังก์ชันสมาชิก (member function) ครั้งเดียว มันจะกลายเป็นเสมือนในทุกคลาสที่สืบทอดมาจากคลาสฐานนั้น ดังนั้น การใช้คีย์เวิร์ด virtual จึงไม่จำเป็นในคลาสลูกขณะประกาศเวอร์ชันที่นิยามใหม่ของฟังก์ชันเสมือนคลาสฐาน

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

#include<iostream> using namespace std; class B {   public:     virtual void s() {       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; }

ผลลัพธ์

In Derived