0
我有一個接受構造函數中的istream引用的類。如果構造函數通過臨時對象,如myclass obj(ifstream("filename"));
那麼ifstream會對obj
的生命有用嗎?它取決於它是否被分配給類中的引用或指針?傳遞給構造函數的臨時對象的C++壽命
例如:
class test
{
public:
istream *p;
test(istream &is)
{
p = &is;
cout << "a constructor" << endl;
}
~test()
{
cout << "a destructor" << endl;
}
bool isgood()
{
return p->good();
}
};
int main()
{
test test(ifstream("test.cpp"));
cout << test.isgood() << endl;
}
輸出:
a constructor
1
a destructor
僅僅因爲輸出表示該文件是很好的,我不知道它是否被摧毀或什麼。如果有涵蓋此部分的標準,請告訴我。謝謝
該代碼甚至不應該編譯... – 0x499602D2
ifstream將在該塊的結尾處關閉並在此之後無效。 'p'會指向垃圾 – JoshG79
我正在使用Visual Studio 2010. @Josh哪個塊結束?我試圖找出在構造函數中打開的fstream是否有效,直到main()結束。謝謝 – loop