class Material
{
public:
void foo()
{
cout << "Class Material";
}
};
class Unusual_Material : public Material
{
public:
void foo()
{
cout << "Class Unusual_Material";
}
};
int main()
{
Material strange = Unusual_Material();
strange.foo(); //outputs "Class Material"
return 0;
}
Tôi muốn điều này dẫn đến "Class Unusual_Material" được hiển thị trên bảng điều khiển. Có cách nào tôi có thể đạt được điều này? Trong chương trình của tôi, tôi có một tài liệu lớp mà từ đó các tài liệu cụ thể khác được bắt nguồn. Phương thức Material :: foo() đại diện cho một phương thức trong Material đủ cho hầu hết các vật liệu, nhưng một cách khác, foo() khác cần phải được định nghĩa cho một vật liệu có tính chất bất thường.Gọi phương thức lớp dẫn xuất từ tham chiếu lớp cơ sở
Tất cả các đối tượng trong chương trình của tôi đều chứa trường Material. Trong trường hợp họ được chỉ định một tài liệu bất thường, tôi muốn có nguồn gốc, bất thường foo được gọi.
Điều này có thể hoặc là khá dễ dàng hoặc không thể, nhưng tôi không thể tìm ra theo cách nào.
Cảm ơn
Là một lưu ý, mã như 'Chất liệu lạ = Unusual_Material();' có thể dẫn đến các vấn đề cắt đối tượng: http://stackoverflow.com/questions/274626/what-is-the-slicing-problem-in-c – birryree