class Animal
{
public:
int a;
double d;
int f(){ return 25;}
};
कोड के लिए मान लीजिए कि इसके बाद के संस्करण, मैं, एक वस्तु को प्रारंभ करने का प्रयास करें new Animal()
कहा, इस new()
भी समारोह f()
के लिए स्मृति को आबंटित करता है?क्या नया() कक्षा के कार्यों के लिए स्मृति आवंटित करता है?
दूसरे शब्दों में, मेमोरी आवंटन शर्तों में क्या अंतर है यदि मेरे पास इस कक्षा में था और new Animal()
किया था?:
class Animal
{
public:
int a;
double d;
};
इसलिए, यदि मेरा फ़ंक्शन एक वर्चुअल फ़ंक्शन है (मेरी कक्षा सार है), तो क्या नई() को ढेर पर स्थान आवंटित करने में कोई समस्या होगी? – Moeb
सभी वर्चुअल फ़ंक्शन का अर्थ यह है कि फ़ंक्शन स्थिर स्मृति में स्थित vtable में जोड़ा जाता है। प्रति वर्ग एक vtable की केवल एक प्रति है जो वर्चुअल फ़ंक्शंस का उपयोग करती है। –
@Ignacio मैं इसका उत्तर ढूंढ रहा हूं: http://stackoverflow.com/questions/2091426/why-cant-we-create-objects-for-an-abstract-class-in-c मुझे लगता है कि समस्या कुछ है स्मृति आवंटन से संबंधित, लेकिन मैं इसे समझ नहीं सकता। – Moeb