Avatar ·

¿Cómo declarar una interfaz en C++? Funciones virtuales puras y clases abstractas

¡Hola a todos! Recientemente comencé a aprender C++ después de Java, y tuve un problema con la declaración de interfaces. En Java estoy acostumbrado a escribir `interface MyInterface { void doSomething(); }`, y cualquier clase puede implementarlo. \n\nPero en C++ no puedo encontrar un análogo de la palabra clave `interface`. Intenté hacer una clase con funciones virtuales normales, pero el compilador se queja de que la clase no se puede instanciar si la función no es virtual pura. Esto es lo que escribí:\n\n```cpp\nclass IShape {\npublic:\n virtual double area(); // Error: no es virtual pura\n virtual void draw(); // También error\n};\n```\n\nLuego agregué `= 0`, y el código se compiló:\n\n```cpp\nclass IShape {\npublic:\n virtual double area() = 0;\n virtual void draw() = 0;\n};\n```\n\nPero no estoy seguro de que esta sea la forma correcta de declarar una interfaz. ¿Necesito hacer el destructor virtual? ¿Qué pasa con la herencia múltiple? ¿Y cómo manejo si quiero que la interfaz tenga una implementación común para algunos métodos?