Meu entendimento básico é que não há implementação para uma função virtual pura, no entanto, disseram-me que pode haver implementação para uma função virtual pura. class A { public: virtual void f() = 0; }; void A::f() { cout<<"Test"<<endl; } O código está acima de OK? Qual é o objetivo …
É errado escrever: class A { public: virtual ~A() = 0; }; para uma classe base abstrata? Pelo menos isso compila no MSVC ... Ele trava no tempo de execução?
Entendo a necessidade de um destruidor virtual. Mas por que precisamos de um destruidor virtual puro? Em um dos artigos em C ++, o autor mencionou que usamos destruidor virtual puro quando queremos tornar uma classe abstrata. Mas podemos tornar uma classe abstrata tornando qualquer uma das funções-membro como pura …
Sempre declaramos uma função virtual pura como: virtual void fun () = 0 ; Ou seja, é sempre atribuído a 0. O que eu entendo é que isso é para inicializar a entrada vtable para esta função como NULL e qualquer outro valor aqui resulta em um erro de tempo …
Às vezes, noto programas que travam no meu computador com o erro: "chamada de função virtual pura". Como esses programas compilam quando um objeto não pode ser criado de uma classe abstrata?