आदेश तर्क an answer I gave recently की टिप्पणियों में चल रहा स्टेम करने के लिए, मैं कुछ रचनात्मक जवाब निम्न प्रश्नों करना चाहते हैं:अपने लक्ष्य के संबंध में एक संदर्भ के जीवनकाल
- एक संदर्भ के विशिष्ट जीवन है वस्तु से यह संदर्भित करता है? क्या संदर्भ केवल इसके लक्ष्य के लिए एक उपनाम है?
- क्या कोई संदर्भ एक सुव्यवस्थित कार्यक्रम में अपने लक्ष्य को पार कर सकता है जिसके परिणामस्वरूप अपरिभाषित व्यवहार होता है?
- क्या किसी ऑब्जेक्ट को मूल ऑब्जेक्ट के लिए आवंटित संग्रहण का पुन: उपयोग किया जा सकता है?
- क्या निम्न कोड उपरोक्त बिंदुओं को बिना अपरिभाषित व्यवहार का आविष्कार किए दिखाता है?
उदाहरण Ben Voigt और सरल (ideone.com पर चला) द्वारा कोड:
#include <iostream>
#include <new>
struct something
{
int i;
};
int main(void)
{
char buffer[sizeof (something) + 40];
something* p = new (buffer) something;
p->i = 11;
int& outlives = p->i;
std::cout << outlives << "\n";
p->~something(); // p->i dies with its parent object
new (p) char[40]; // memory is reused, lifetime of *p (and p->i) is so done
new (&outlives) int(13);
std::cout << outlives << "\n"; // but reference is still alive and well
// and useful, because strict aliasing was respected
}
यह एक बहुत सारे प्रश्न हैं, प्रत्येक को उचित रूप से उत्तर देने के लिए कुछ मानक शब्द उद्धरणों की आवश्यकता होती है (प्रश्न की प्रकृति को देखते हुए मुझे लगता है कि आप मानक कोट्स को उचित उत्तरों के रूप में उम्मीद करते हैं)। यदि हम उनमें से किसी एक पर ध्यान केंद्रित करना चाहते हैं तो यह/अधिक उपयोगी हो सकता है, और यदि उस संदर्भ में उपयोगी है तो केवल दूसरों का जवाब दें ... – PlasmaHH
मैं सहमत हूं। कृपया, प्रति प्रश्न एक प्रश्न। और आप पाएंगे कि उपधाराओं का उत्तर पहले दिया गया है। –
इसके अलावा, वह कोड नमूना बहुत अधिक चल रहा है। एक छोटा टेस्टकेस बनाओ। –