के रूप में संदर्भ संदर्भ यहां तक कि यदि इस विषय पर कई बार चर्चा की गई थी, तो मुझे अपने विशेष मामले के बारे में एक निर्णायक स्पष्टीकरण नहीं मिल रहा है। const
RefTest
अस्थायी जीवनकाल का विस्तार करेगा? क्या नीचे दिया गया उदाहरण कानूनी है?कक्षा सदस्य
#include <iostream>
class RefTest
{
public:
RefTest(const std::string &input) : str(input) {}
~RefTest() {std::cout << "RefTest" << std::endl;}
private:
std::string str;
};
class Child
{
public:
Child (const RefTest &ref) : ref_m(ref) {}
~Child() {std::cout << "Test" << std::endl;}
private:
const RefTest &ref_m;
};
class Test
{
public:
Test() : child(RefTest("child")) {}//Will the temporary get destroyed here?
~Test() {std::cout << "Test" << std::endl;}
private:
const Child child;
};
int main()
{
Test test;
}
अंतिम पंक्ति बिल्कुल एक वस्तु नहीं बना रहा है यही कारण है कि । यह एक समारोह घोषित कर रहा है। Http://en.wikipedia.org/wiki/Most_vexing_parse देखें। –
@ ओली क्रिसल्सवर्थ ओह, शूट। मैं डर गया था उदाहरण बेवकूफ है :(कृपया मेरी एक है, जो थोड़ा मेरे वास्तविक जीवन स्थिति। इस बार के करीब होना चाहिए, मैं वहाँ किसी भी अप्रिय पार्स मुद्दों होना चाहिए नहीं लगता कि अद्यतन किया गया। –
@NayanaAdassuriya जो 'test2 'मैं अपने प्रारंभिक उदाहरण पुनर्लेखन, क्योंकि मैं इसे में पर्याप्त विचार करना नहीं था था। के –