2015-01-31 11 views
6

इस एक सार आधार वर्ग की एक परिभाषा हो सकता है: "केवल शुद्ध आभासी तरीकों में शामिल है और अक्सर व्युत्पन्न वर्ग के लिए एक इंटरफेस विनिर्देश रूप में कार्य करता"सार आधार वर्ग परिभाषा

या सार आधार वर्ग भी अन्य तरीकों शामिल कर सकते हैं (भी आभासी)

+0

"कम से कम एक शुद्ध आभासी विधि" एक बेहतर परिभाषा होगी। – juanchopanza

+0

एक वर्ग सार है यदि इसमें कम से कम एक शुद्ध वर्चुअल विधि है। इसमें अन्य विधियां हो सकती हैं - शुद्ध आभासी, आभासी, और/या गैर-आभासी। –

+0

कक्षाएं जो केवल शुद्ध आभासी हैं (कोई अन्य विधियां या डेटा सदस्य नहीं) को आम तौर पर इंटरफेस कहा जाता है। एक अमूर्त वर्ग एक इंटरफेस है जिसमें नियमित कार्य भी हो सकते हैं। शुद्ध आभासी कार्यों के कारण दोनों प्रकार को तत्काल नहीं किया जा सकता है। –

उत्तर

4

सी ++ मानक (§10.4, सार कक्षाएं, जोर मेरा) से परिभाषा के अनुसार:

एक सार वर्ग एक वर्ग है कि कुछ अन्य के आधार वर्ग के रूप में केवल इस्तेमाल किया जा सकता है कक्षा; एक सार वर्ग की कोई वस्तु नहीं बनाई जा सकती है, इसके अलावा इसे प्राप्त कक्षा के उप-तत्वों को छोड़कर। एक वर्ग सार है यदि कम से कम एकशुद्ध वर्चुअल फ़ंक्शन है। [नोट: ऐसा फ़ंक्शन विरासत में प्राप्त हो सकता है: नीचे देखें। अंत टिप्पणी]

class point {/.../}; 
class shape { // abstract class 
    point center; 
public: 
    point where() { return center; } 
    void move(point p) { center=p; draw(); } 
    virtual void rotate(int) = 0; // pure virtual 
    virtual void draw() = 0; // pure virtual 
}; 

उदाहरण में, shape दो शुद्ध आभासी विधियों (यह एक अमूर्त वर्ग में आता है जो) शामिल हैं, लेकिन यह भी एक दूसरे को न आभासी तरीकों में शामिल है। वह ठीक है। तो आपकी मूल परिभाषा है कि एक अमूर्त वर्ग में केवल शुद्ध वर्चुअल फ़ंक्शंस बहुत ही सीमित है। बस कम से कम एक ऐसा होना पर्याप्त है।

+0

इसके लिए धन्यवाद ... मैंने कहीं परिभाषा पढ़ी और वास्तव में उलझन में आया .. !! –

+0

@ कौशिक रेड्डी इस तरह की कुछ परिभाषाएं हैं: वे उन लोगों से निकलती हैं जो प्रोग्रामिंग के बारे में अधिक सोचते हैं। एक अमूर्त सोच अकादमिक के लिए एक अमूर्त वर्ग वास्तव में अमूर्त नहीं है जब तक कि इसमें कोई गैर-अमूर्त हिस्सा न हो (मुझे पता होना चाहिए, मैं एक अकादमिक हूं ... ;-)) लेकिन यदि आप सी ++ के बारे में पूछते हैं, तो इसकी परिभाषा भाषा मानक मानक है। – cmaster

संबंधित मुद्दे