Computer >> Máy Tính >  >> Lập trình >> C ++

Các hàm ảo và tính đa hình thời gian chạy trong C ++

Các hàm ảo trong C ++ sử dụng để tạo danh sách các con trỏ lớp cơ sở và gọi các phương thức của bất kỳ lớp dẫn xuất nào mà không cần biết loại đối tượng lớp dẫn xuất. Các chức năng ảo được giải quyết muộn, trong thời gian chạy.

Công dụng chính của chức năng ảo là đạt được Đa hình thời gian chạy. Đa hình thời gian chạy chỉ có thể đạt được thông qua một con trỏ (hoặc tham chiếu) của loại lớp cơ sở. Ngoài ra, một con trỏ lớp cơ sở có thể trỏ đến các đối tượng của lớp cơ sở cũng như đến các đối tượng của lớp dẫn xuất. Trong đoạn mã trên, con trỏ lớp cơ sở ‘b’ chứa địa chỉ của đối tượng ‘d’ của lớp dẫn xuất.

Mã mẫu

#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;
}

Đầu ra

In Derived