Tôi đang cố gắng để hoàn thành cùng được mô tả trong một câu hỏi trước:Gọi hàm ảo của lớp dẫn xuất từ hàm tạo lớp cơ sở?
virtual function call from base class
Nhưng, câu hỏi thực sự của tôi là:
gì nếu f() là các nhà xây dựng trong lớp cơ sở ? G() nào sẽ được gọi? Tôi không biết nếu tôi làm sai, nhưng trong chương trình của tôi có vẻ như đó là điều ngược lại.
Lấy biến tương tự từ câu hỏi trước, một mã số trong đó cho thấy như vậy
hành vi sẽ trông như thế này:
Class Base
{
Base(){g();};
virtual void g(){//Do some Base related code;}
};
Class Derived : public Base
{
Derived(){};
virtual void g(){//Do some Derived related code};
};
int main()
{
Derived newDerived;
return 0;
}
Cập nhật:
Thanx để Naveen.
Anh ấy đã cung cấp cho tôi trang chứa tất cả thông tin có liên quan về chủ đề này.
Tôi sẽ cho bạn biết liên kết ở đây:
parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.6
Bạn có thể hiển thị một số mã ví dụ thể hiện hành vi này không? – jtbandes