Câu hỏi của tôi có lẽ sẽ được giải thích tốt nhất bằng một ví dụ.Gọi hàm bị ghi đè từ một lớp cơ sở?
Ví dụ, tôi có 2 lớp: Một lớp cơ sở và lớp dẫn xuất:
class baseClass
{
public:
baseClass()
{
foo();
}
virtual bool foo() { printf("baseClass"); return false;}
};
class derivedClass : public baseClass
{
public:
bool foo()
{
printf("derivedClass");
return true;
}
};
Khi tôi tạo ra một thể hiện của derivedClass
, các nhà xây dựng trong baseClass
sẽ được gọi, và foo()
sẽ được gọi từ nó constructor. Vấn đề là, hàm tạo của baseClass đang gọi số foo()
của chính nó và không có ghi đè nào là lớp bắt nguồn đã ghi đè. Có anyway để làm cho baseClass gọi chức năng ghi đè, không phải là định nghĩa riêng của nó về chức năng?
+1: Constructors là đặc biệt và thủ thuật;) – James
Cảm ơn bạn đã trả lời! Tôi cảm thấy như một thằng ngốc bây giờ bởi vì tôi nên biết điều này rồi. Cảm ơn:] – Brad
Để biết cách thực hiện điều gì đó tương tự, hãy xem C++ FAQ Lite 23.6: http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.6 – aschepler