c++ - कैसे सी++ में इंटरफेस को लागू करने के लिए?




interface concept (2)

संभव डुप्लिकेट:
C ++ में इंटरफेस अनुकरण करने का पसंदीदा तरीका

मुझे यह पता लगाने के लिए उत्सुक था कि जावा में सी ++ में इंटरफेस हैं, क्योंकि इंटरफेस के माध्यम से वर्गों को डीक्यूप्लिंग के साथ डिज़ाइन पैटर्न का कार्यान्वयन भी होता है। क्या सी ++ में इंटरफेस बनाने का एक समान तरीका है?


इंटरफ़ेस सी ++ में एक शुद्ध सार वर्ग में कुछ भी नहीं है आदर्श रूप से इस इंटरफ़ेस class में केवल शुद्ध virtual पब्लिक विधियां और static const डेटा शामिल होना चाहिए। जैसे

class interfaceA
{
public:
  static const int X = 10;
  virtual void foo () = 0
  virtual int get () const = 0;
  virtual inline ~interfaceA () = 0;
};
interfaceA::~interfaceA () {}

सी + + इंटरफेस का कोई अंतर्निहित अवधारणा नहीं है। आप इसे केवल अमूर्त वर्गों का उपयोग करके लागू कर सकते हैं जिसमें केवल शुद्ध वर्चुअल फ़ंक्शन शामिल हैं । चूंकि यह एकाधिक विरासत की अनुमति देता है, इसलिए आप इस वर्ग को दूसरे वर्ग बनाने के लिए आवंटित कर सकते हैं, जिसमें उसके बाद इस इंटरफेस (मेरा मतलब है, ऑब्जेक्ट इंटरफ़ेस :-)) होगा।

नमूना उदाहरण कुछ ऐसा होगा -

class Interface
{
public:
    Interface(){}
    virtual ~Interface(){}
    virtual void method1()=0;    // "=0" part makes this method pure virtual, and
                                 // also makes this class abstract.
    virtual void method2()=0;
};

class Concrete : public Interface
{
private:
    int myMember;

public:
    Concrete(){}
    ~Concrete(){}
    void method1();
    void method2();
};

// Provide implementation for the first method
void Concrete::method1()
{
    // Your implementation
}

// Provide implementation for the second method
void Concrete::method2()
{
    // Your implementation
}

int main(void)
{
    Interface *f = new Concrete();

    f->method1();
    f->method2();

    delete f;

    return 0;
}






concept