Avatar ·

Como declarar uma interface em C++? (funções virtual puras e classes abstratas)

Olá! Comecei a estudar C++ recentemente depois de Java, e fico muito confuso com a ausência da keyword `interface`, como em Java ou C#. Em Java, eu costumava fazer assim: ```java public interface Drawable { void draw(); void resize(int width, int height); } ``` Mas em C++ não encontro um análogo direto. Eu sei que em C++ existem classes abstratas com funções virtual puras, mas não tenho certeza de como declará-las e usá-las corretamente. Por exemplo, tentei escrever este código: ```cpp class Drawable { public: virtual void draw() = 0; virtual void resize(int width, int height) = 0; }; ``` Mas surgiram algumas dúvidas: 1. Preciso adicionar um destructor virtual? Se sim, ele deve ser puramente virtual? 2. Preciso impedir a cópia de objetos dessa classe? 3. Como herdar corretamente dessa classe e sobrescrever os métodos? 4. Existem "best practices" para declarar interfaces em C++? Ouvi falar sobre herança múltipla e o problema do losango.