01/10/2018, 11:12
Lỗi với virtual trong đa hình C++
khi em sử dụng hàm virtual lại không khác gì với không sử dụng, em không tìm thấy lỗi sai ,nó vẫn chạy nhưng k đúng (in ra hàm chieu_Q lại in ra hàm nidalle).Mong mọi người giúp đỡ .Đây là bài code của em:
#include< iostream >
using namespace std;
struct xet_tinh_ke_thua{
virtual void nidalle(){ //virtual :ảo
std::cout << "ta la than rung " << std::endl;
}
};
struct chieu_Q : public xet_tinh_ke_thua{
void Q(){
std::cout << " phi lao " << std::endl;
}
};
void main(){
xet_tinh_ke_thua *pt = new chieu_Q;
pt->nidalle();
system("pause");
}
Bài liên quan
Bạn muốn có pure virtual thì phải gán bằng 0. Việc tạo 1 đối tượng của superclass có pure virtual bị cấm.
Để sử dụng đa hình, phương thức chung phải có
virtual
.bạn có thể nói rõ hơn về cách giải quyết được k ạ . Mình học trong clip anh Đạt ,a cũng chỉ sử dụng đến z nên mình làm theo ,chắc có sự khác nhau hả bạn.
Ta biết class nào có pure virtual method đều bị cấm tạo đối tượng (abstract class). Mà các subclass từ nó đều thừa hưởng tất, nên subclass phải override tất cả những method như vậy, nếu không thì cũng bị cấm tạo đối tượng.
Mà hàm của bạn mới là virtual, chưa phải pure virtual.
Code của bạn thể hiện tính đa hình ở chỗ nào?