কেন এটি করে:
#include <string>
#include <iostream>
using namespace std;
class Sandbox
{
public:
Sandbox(const string& n) : member(n) {}
const string& member;
};
int main()
{
Sandbox sandbox(string("four"));
cout << "The answer is: " << sandbox.member << endl;
return 0;
}
এর আউটপুট দিন:
উত্তরটা হচ্ছে:
পরিবর্তে:
উত্তর: চার
SandBox::member
তার পাঠ করা হয় তখন অস্থায়ী স্ট্রিংটি এখনও বেঁচে থাকে ।
string("four")
পুরো প্রকাশের শেষে অস্থায়ীটি ধ্বংস হয়, এবং Sandbox
নির্মাণকারীর বাইরে যাওয়ার পরে নয় ? পোটোসওয়টারের উত্তরটি বলে যে কনস্ট্রাক্টরের কর্টর-ইনিশিয়ালাইজারের একটি রেফারেন্স সদস্যকে অস্থায়ীভাবে আবদ্ধ করা (§১২. [.২ [শ্রেণি.বেস.ইনাইট]) কনস্ট্রাক্টরটি প্রস্থান না হওয়া অবধি স্থায়ী থাকে।
cout << "The answer is: " << Sandbox(string("four")).member << endl;
তবে এটির কাজের নিশ্চয়তা দেওয়া হবে।