Tôi hiểu rằng C++ triển khai các hàm ảo đa hình thời gian chạy thorugh và từ khóa ảo được kế thừa nhưng tôi không thấy sử dụng từ khóa ảo trong lớp dẫn xuất.Sử dụng từ khóa ảo trong C++
ví dụ: Trong trường hợp dưới đây ngay cả khi bạn bỏ từ khóa ảo trong lớp dẫn xuất vẫn ptr-> method() gọi đi đến phương thức :: derived. Vì vậy, những gì thêm từ khóa ảo này đang làm trong lớp dẫn xuất?
#include<iostream>
using namespace std;
class base
{
public:
virtual void method()
{
std::cout << std::endl << "BASE" << std::endl;
}
};
class derived: public base
{
public:
virtual void method()
{
std::cout << std::endl << "DERIVED" << std::endl;
}
};
int main()
{
base* ptr = new derived();
ptr->method();
return 9;
}
Như bạn đã thấy, điều đó là thừa. – BoBTFish
@ Nbr44 bạn sẽ không trả lời được từ bình luận này – triclosan
'virtual' được ngụ ý trong lớp dẫn xuất khi ghi đè một hàm ảo trong lớp cơ sở. C++ 11 cũng giới thiệu từ khóa 'final' để ngăn chặn các lớp thừa kế hơn từ việc thực hiện lại hàm ảo. – dunc123