#include <iostream>
using namespace std;
class Duck {
public:
virtual void quack() = 0;
};
class BigDuck : public Duck {
public:
// void quack(); (uncommenting will make it compile)
};
void BigDuck::quack(){ cout << "BigDuckDuck::Quack\n"; }
int main() {
BigDuck b;
Duck *d = &b;
d->quack();
}
Đoạn mã trên không biên dịch. Tuy nhiên, khi tôi khai báo hàm ảo trong lớp con, thì nó biên dịch tốt.Tại sao tôi phải redeclare một chức năng ảo trong khi ghi đè [C++]
Nếu trình biên dịch đã có chữ ký của hàm mà lớp con sẽ ghi đè, thì tại sao cần phải xác nhận lại?
Mọi thông tin chi tiết?
Bạn gặp lỗi trình biên dịch nào? –
Mặc dù trong ví dụ này chúng ta thấy một lớp cơ sở trừu tượng, câu hỏi là hợp lệ nói chung, quá. – xtofl
Tôi có thể, mặc dù không biết bạn đang sử dụng trình biên dịch nào, tôi có thể không nhận được cùng một lỗi (hoặc bất kỳ) nào :) –