30/09/2018, 16:09

Tại sao phải dùng hàm ảo (Virtual)?

Ví dụ:

#include <iostream>
using namespace std;
struct A{
     virtual void skill(){
          cout<< " Skill cua A 
";
     }
};
struct B : public A{
     void skill(){
          cout<< " Skill cua B 
";
     }
};
struct C : public A{
     void skill(){
          cout<< " Skill cua C 
";
     }
};

int main(){
    A *pt1 = new A;
    pt1->skill();
    A *pt2 = new B;
    pt2->skill();
    A *pt3 = new C;
    pt3->skill();
    pause("sytems");
}
Nguyễn Minh Dũng viết 18:18 ngày 30/09/2018

Hàm ảo để bắt buộc các class kế thừa từ Abstract class A, class B và C, phải implement lại method skill.

Phạm Hoàng Tuấn viết 18:12 ngày 30/09/2018

Ý bạn muốn hỏi cú pháp hay mục đích ra đời của từ khóa vỉtual. Cú pháp thì a @ltd đã nói ở trên, còn mục đích sử dụng là để thể hiện tính đa hình trong hướng đối tượng, một phương thức skill()class/struct cha (struct A) có thể được xử lý khác nhau ở các class/struct con (structB, structC )

Nguyễn Tuấn Tiến viết 18:18 ngày 30/09/2018

Mình có thể tạo thêm một struct D kế thừa public từ struct B,C được không nhỉ?

Bài liên quan
0