以下のようなコードを書いてみました。
cpp
1class single 2{ 3 int _a; 4 single(int n) : _a(n) {} 5 6public: 7 single(const single&) = delete; 8 single& operator = (const single&) = delete; 9 single(single&&) = delete; 10 single& operator = (single&&) = delete; 11 12 static auto& getInstance(int n) 13 { 14 static single s(n); 15 return s; 16 } 17 18 auto& get() { return _a; } 19}; 20 21int main() 22{ 23 auto& s = single::getInstance(3); 24 cout << &s << endl; 25 cout << s.get() << endl; 26 27 auto& r = single::getInstance(6); 28 cout << &r << endl; 29 cout << r.get() << endl; 30}
rとsはアドレスも値も全く同じでした。
僕の予想だとstatic変数がそれぞれに戻り、3と6になると思っていました。
なぜこう動くのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。