destructor

    1熱度

    1回答

    在他的「Effective STL」中,Meyers展示瞭如何正確清除指針的向量(std::vector::clear只刪除了他的指針,而不是他們佔用的內存)。 於是他調用clear使用for_each與unary_function它調用對象的析構之前建議: template<typename T> struct DeleteMyObject2: public std::unary_functio

    1熱度

    2回答

    我有一個析構函數,即使程序不正確地終止以確保外部進程死亡,也需要調用析構函數。 目前我已經註冊要調用的析構函數 std::atexit(killprocess); std::at_quick_exit(killprocess); 然而,這意味着該方案已完成,但沒有終止時,進程沒有中止。有什麼方法可以確保killprocess或析構函數在退出或程序完成但未終止時調用? 編輯:完成但未終止的狀態

    2熱度

    3回答

    我在析構函數上做過實踐,但編譯這個程序時我不知道爲什麼輸出不如我想的那樣。 #include <iostream> using namespace std; class aaa { private: static int x; int code; public: /*after constructor executes 3 times the

    4熱度

    1回答

    它什麼都不做的虛擬析構函數是 virtual ~ClassName() {} 由於C++ 11 we can alternatively say: virtual ~ClassName() = default; 有這兩者之間有什麼區別?

    -2熱度

    1回答

    我使用boost :: thread來運行一個函子。我想看到在主線程中被調用兩次的對象的一個的析構函數。但是,有時,我發現析構函數在主線程中調用一次,並在調用的線程中調用一次。 A類會做一些複雜的事情,因此這種現象並不總是會發生。任何人都知道如何發生這種情況?順便說一下,我現在使用boost :: thread myThread(boost :: ref(a)),並且一切看起來都很好。提前致謝。

    3熱度

    1回答

    的順序我有以下C++代碼(VS2013): #include <iostream> using namespace std; class A { int i; public: A(int i) : i(i) { cout << "DEFAULT CTOR " << i << endl; } A(const A &o) : i(o.i) {

    1熱度

    1回答

    一個文件流的析構函數可以拋出異常,例如,如果文件關閉操作失敗? auto f = new std::ofstream("data.txt"); f->exceptions(std::ofstream::failbit | std::ofstream::badbit); ... delete f; // May throw? 我可以通過手動關閉流來防止這種異常嗎?

    0熱度

    2回答

    我有一系列問題要問。 什麼是銷燬指針向量的正確方法? 我知道矢量類有默認驅逐艦,但我不知道指針是否改變了一些東西。 包含銷燬對象指針的數組需要簡單的命令:Delete [] pointname? 還是我必須先做指針上的其他操作? 要清空對象指針的列表或向量需要一個簡單的命令:list_name/vector_name.clear();或者先對指針進行一些其他操作?

    1熱度

    2回答

    這個例子顯示編譯器(msvc14,gcc,clang)的奇怪行爲,但是我沒有找到解釋。 當我們實現pipml習語並使用前向聲明時,我們需要考慮unique_ptr具有自己的具有不完整類型的特定行爲。 這種情況被提及here和here。 但是,當我們將轉發類的定義移動到另一個頭文件並在稍後使用客戶類時在一個地方包含頭文件時,編譯器變得瘋狂 - 在某些特殊的析構函數聲明中,他們說關於不完整類型。 這是

    2熱度

    2回答

    是否有任何方式在類析構函數之前調用字段析構函數? 假設我有2班Small和Big,並Big包含Small一個實例作爲其爲這樣的字段: class Small { public: ~Small() {std::cout << "Small destructor" << std::endl;} }; class Big { public: ~Big() {std::c