C++ में इंटरफ़ेस कैसे घोषित करें? (शुद्ध वर्चुअल फ़ंक्शन और एब्सट्रैक्ट क्लासेस)
नमस्ते! मैंने अभी Java के बाद C++ सीखना शुरू किया है, और मुझे Java या C# जैसे `interface` कीवर्ड की अनुपस्थिति बहुत भ्रमित करती है। 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. क्या वर्चुअल डिस्ट्रक्टर जोड़ना आवश्यक है? यदि हाँ, तो क्या वह शुद्ध वर्चुअल होना चाहिए?
2. क्या ऐसे क्लास की ऑब्जेक्ट कॉपी करने से रोकना आवश्यक है?
3. ऐसे क्लास से सही तरीके से इनहेरिट कैसे करें और मेथड्स को ओवरराइड कैसे करें?
4. क्या C++ में इंटरफ़ेसेस घोषित करने के लिए कोई "best practices" हैं?
मैंने मल्टीपल इनहेरिटेंस और डायमंड के बारे में सुना है।