C++初心者で拙い質問かもしれませんが,教えていただきたいです.
デストラクタに慣れるために,色々と自分でプログラムを組んで試していたのですが,下記のようなプログラムを実行した際,abcの前にデストラクタが二回呼び起こされている理由を教えていただきたいです.
getKitty関数内の Kitty obj が破壊されるので,abcの前にデストラクタは一回しか呼び起こされないと思うのですが,なぜ二回なのでしょうか?
どなたか分かる方いらっしゃいましたら答えていただけると助かります.
C++
1#include <iostream> 2using namespace std; 3 4class Kitty { 5public: 6 const char *str; 7 ~Kitty(); 8}; 9 10Kitty::~Kitty() { 11 cout << "口からバズーカ ( ̄□ ̄)\n"; 12} 13 14Kitty getKitty(const char *in) { 15 Kitty obj; 16 obj.str = in; 17 cout << obj.str; 18} 19 20int main() { 21 getKitty("Kitty on your lap\n"); 22 cout << "abc/n"; 23 return 0; 24} 25
result
1Kitty on your lap 2口からバズーカ ( ̄□ ̄) 3口からバズーカ ( ̄□ ̄) 4abc
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/11 01:53