كيفية تعريف واجهة في C++؟ (الدوال الافتراضية البحتة والفئات المجردة)
مرحبًا! لقد بدأت للتو في تعلم C++ بعد Java، ويشوشني عدم وجود كلمة مفتاحية `interface` كما في Java أو C#. في Java كنت معتادًا على فعل ذلك:
```java
public interface Drawable {
void draw();
void resize(int width, int height);
}
```
أما في C++ فلا أجد نظيرًا مباشرًا. أعلم أن في C++ فئات مجردة تحتوي على دوال افتراضية بحتة، لكني لست متأكدًا من كيفية تعريفها واستخدامها بشكل صحيح.
على سبيل المثال، جربت كتابة هذا الكود:
```cpp
class Drawable {
public:
virtual void draw() = 0;
virtual void resize(int width, int height) = 0;
};
```
لكن ظهرت لدي أسئلة:
1. هل أحتاج إلى إضافة destructor افتراضي؟ إذا كان الأمر كذلك، هل يجب أن يكون افتراضيًا بحتًا؟
2. هل أحتاج إلى منع نسخ كائنات من هذه الفئة؟
3. كيف يمكنني الوراثة من هذه الفئة بشكل صحيح وإعادة تعريف الدوال؟
4. هل هناك أي "best practices" لتعريف الواجهات في C++؟
لقد سمعت عن الوراثة المتعددة والماس (الماس).