從:http://en.cppreference.com/w/cpp/memory/unique_ptr的unique_ptr自動毀滅魔法
問題:爲什麼close()方法被調用只有FP不爲空?
std::unique_ptr<std::FILE, decltype(&std::fclose)> fp(std::fopen("demo.txt", "r"),
&std::fclose);
if(fp) // fopen could have failed; in which case fp holds a null pointer
std::cout << (char)std::fgetc(fp.get()) << '\n';
註釋塊下面:// FCLOSE()這裏所謂的,但只有當FILE *是不是一個空指針 //(也就是說,如果成功的fopen)
問題 : 這怎麼發生的?我知道調用close(NULL)是不好的。那麼支票在哪裏發生? decltype(& std :: fclose)知道如何檢查null?如果在其他時間甚至在空值上調用它是可取的並且由函數處理呢?
不好。錯過了。將嘗試刪除該問題。 – Pranay
留下問題,問得好,可能會幫助別人。 –