मेरा आवेदन Panda
वस्तुओं की एक बड़ी राशि का उपयोग करता है। प्रत्येक Panda
में Bamboo
ऑब्जेक्ट्स की एक सूची है। Panda
प्रारंभ होने के बाद यह सूची बदल नहीं जाती है (Bamboo
ऑब्जेक्ट्स को जोड़ा या हटाया जाता है)। वर्तमान में, मेरी कक्षा के रूप में इस कार्यान्वित किया जाता है: - मूल रूप से बजाय नियमित निर्माता के माध्यम से वस्तुओं बनाने का निर्माण,,परिवर्तनीय-लंबाई वस्तुओं: कभी एक अच्छा विचार?
class Panda
{
int a;
int b;
int _bambooCount;
Bamboo* _bamboo;
Panda (int count, Bamboo* bamboo)
{
_bambooCount = count;
_bamboo = new Bamboo[count];
// ... copy bamboo into the array ...
}
}
Bamboo
ऑब्जेक्ट की श्रृंखला के आवंटन की भूमि के ऊपर कम करने के लिए, मैं इस वर्ग के रूप में निम्न प्रकार लागू कर सकता है
class Panda
{
int a;
int b;
Panda()
{
// ... other initializations here ...
}
static Panda *createPanda (int count, Bamboo* bamboo)
{
byte* p = new byte[sizeof(Panda) +
sizeof(Bamboo) * count];
new (p) Panda();
Bamboo* bamboo = (Bamboo*)
p + sizeof(Panda);
// ... copy bamboo objects into the memory
// behind the object...
return (Panda*)p;
}
}
आप दूसरे डिजाइन के साथ कोई समस्या पूर्वानुमान कर सकते हैं, वृद्धि हुई रखरखाव प्रयास के अलावा अन्य: विधि दोनों Panda
वस्तु और उसके Bamboo
सरणी धारण करने के लिए एक भी स्मृति ब्लॉक आवंटित करता? क्या यह एक स्वीकार्य डिजाइन पैटर्न है, या बस एक समयपूर्व अनुकूलन है जो बाद में मुझे काटने के लिए वापस आ सकता है?
यह काट देगा। और यह कड़ी मेहनत करेगा। –
आप सी ++ में कक्षा प्रकारों के लिए अधिकांश अर्थशास्त्र को तोड़ रहे हैं। परिवर्तनीय-लंबाई वाली वस्तुएं C++ में मौजूद नहीं हैं। – jalf
यदि आप इस प्रकृति के आंखों के पानी के हैक में रूचि रखते हैं, तो आप सिम्बियन/सी ++ से टीबीयूफ़ 8 और टीबीएफ 16 वर्ग टेम्पलेट्स को भी देखना चाहेंगे। –