2009-02-28 9 views
14

मान लीजिए मैं एक Base वर्ग है:क्या दोस्ती सी ++ में विरासत में मिली है?

class Base { 
    friend SomeOtherClass; 
}; 

और वहाँ एक और (भिन्न) वर्ग कि Base से विरासत है:

class AnotherClass : public Base {} 

दोस्ती के साथ-साथ विरासत में मिला है?

* its constructor and its destructor 
* its operator=() members 
* its friends 

तो, कोई:

+0

फिर भी एक और सवाल जिसे एक कंपिलर का उपयोग करके आसानी से उत्तर दिया जाना चाहिए था। – shoosh

+8

@ शूश: कंपाइलर्स आवश्यक रूप से मानकों के अनुरूप नहीं हैं। इस तरह के एक सवाल मानक द्वारा जवाब दिया जाना चाहिए, संकलक नहीं। –

+0

@Shoosh कौन सा कंपाइलर? यूनिक्स के लिए विंडोज़ या जी ++ के लिए वीएस? सी ++ मानक का कौन सा संस्करण? यदि आप कंपाइलर काम करता है या काम नहीं करता है तो भी आप पूछ सकते हैं कि कई सवाल हैं। – user3728501

उत्तर

19

सिद्धांत रूप में, एक व्युत्पन्न वर्ग को छोड़कर एक आधार वर्ग के हर सदस्य इनहेरिट करती है। दोस्तों विरासत में नहीं हैं।

+5

यह दिलचस्प है कि आपने यह कहने के लिए सही शब्द चुना है: http://www.cplusplus.com/doc/tutorial/inheritance/ – dicroce

+0

शायद अब पूछने का एक अच्छा सवाल यह है कि आप इसे ऐसा बना सकते हैं कि दोस्ती विरासत में हो ? यह निश्चित रूप से उपयोगी होगा कि मैं उन सभी वर्गों की सूची लिखने के बजाय क्या कर रहा हूं, जिन्हें मैं "दोस्ती" करना चाहता हूं। – user3728501

7

कोई यह के रूप में यहाँ प्रलेखित, नहीं है: http://www.parashift.com/c++-faq-lite/friends.html#faq-14.4

+0

लिंक में उदाहरण ओपी के प्रश्न के विपरीत मामले दिखाता है। मैं यह जोड़ना चाहता हूं कि 'SomeOtherClass' के पास' बेस' फ़ील्ड और 'अन्य क्लास' की ऑब्जेक्ट्स में विरासत विधियों तक पहुंच होगी। –

9

नहीं ऐसा नहीं है।

संपादित करें: सी ++ स्टैंडर्ड से बोली के लिए, अनुभाग 11,4/8

दोस्ती न विरासत में मिला है और न ही सकर्मक।

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

  • कोई संबंधित समस्या नहीं^_^