Como declarar uma interface em C++? Funções virtual puras e classes abstratas
Olá a todos! Comecei recentemente a estudar C++ depois de Java, e tive um problema com a declaração de interfaces. Em Java, estou acostumado a escrever `interface MyInterface { void doSomething(); }`, e qualquer classe pode implementá-la. \n\nMas em C++ não consigo encontrar um análogo da keyword `interface`. Tentei criar uma classe com funções virtuais comuns, mas o compilador reclama que a classe não pode ser instanciada se a função não for virtual pura. Aqui está o que escrevi:\n\n```cpp\nclass IShape {\npublic:\n virtual double area(); // Erro: não é virtual pura\n virtual void draw(); // Também erro\n};\n```\n\nDepois adicionei `= 0`, e o código compilou:\n\n```cpp\nclass IShape {\npublic:\n virtual double area() = 0;\n virtual void draw() = 0;\n};\n```\n\nMas não tenho certeza se essa é a maneira correta de declarar uma interface. Preciso tornar o destructor virtual? E quanto à herança múltipla? E como faço se quiser que a interface tenha uma implementação comum para alguns métodos?