cost 110 ms
為什么標准不允許使用標量類型名稱的偽析構函數調用?

[英]Why does the standard disallow a pseudo-destructor call with a name of scalar type?

標准規則: [expr.prim.id.unqual]/nt:unqualified-id : 不合格的ID:... ~ 類型名稱 ~ decltype 說明符... [dcl.type.simple]/nt:type-name : 類型名稱: 班級名稱枚舉名稱類型定義名稱標量類型的名稱不是 ...

為什么標准不允許顯式的析構函數調用,其中 ~ 前面是模板關鍵字,后面是限定名?

[英]Why does the standard disallow an explicit destructor call with ~ preceded by the template keyword and followed by a qualified name?

標准規則: [temp.names]/6 以關鍵字 template 為前綴的名稱應后跟模板參數列表或引用 class 模板或別名模板。 后一種情況已棄用([depr.template.template])。 關鍵字模板不應出現在 ~ 標記之前(如命名析構函數)。 這禁止使用template關鍵 ...

在 C++ 中減少 `constexpr` object 生命周期是否合法?

[英]Is reduction of `constexpr` object lifetime legal in C++?

對於普通對象(即使是const對象),允許通過顯式調用析構函數來結束它們的生命周期。 稍后,例如,程序可以使用 placement new在相同的 memory 位置開始另一個 object 生命周期。 但是調用constexpr object 的析構函數合法嗎? 它能產生一些有用的或至少是格式良 ...

static 成員變量(指針)的構造函數和析構函數

[英]Constructor and Destructor for static member variable (a pointer)

我正在研究一個 class ex1 ,它需要一個 static 成員變量y 。 static 成員變量是指向 class ex2 的 object 的指針,該ex2具有自己的構造函數和析構函數。 現在我知道如何通過在 class 之外定義變量y來初始化它。 但是如何調用變量y的析構函數呢? 我需要 ...

當它是一個noop時,是否需要調用一個非平凡的析構函數?

[英]is it required to call a non-trivial destructor when it is a noop?

當你知道在這個特定情況下析構函數是一個noop時,標准是否需要調用非平凡的析構函數? 如果沒有調用析構函數,那么代碼可能會被編譯器破壞? 用例是一個包含動態分配指針的類。 默認情況下,此指針由構造函數中的new獲取。 這個類也可以從分配器獲得動態分配的指針。 該類跟蹤它如何獲取 ...

從構造函數中的catch塊調用析構函數是否安全?

[英]Is calling destructor from a catch block in constructor safe?

在我的構造函數中,如果其中的任何代碼拋出,我必須銷毀任何剩余的資源。 我想避免編寫重復的代碼,所以我只是在catch塊中調用析構函數,而不是釋放任何已創建的資源。 這樣安全嗎? 我知道如果構造函數拋出,析構函數不會被調用,所以我嘗試在msvc中編譯一些代碼,似乎沒什么不對,但我不確定這 ...

顯式調用析構函數

[英]Explicit call to destructor

我偶然發現了以下代碼片段: 該文本表示此代碼段應該導致運行時錯誤。 現在,我對此並不十分肯定,所以我嘗試編譯並運行它。 有效。 奇怪的是,盡管所涉及的數據非常簡單,但在打印“文本”之后程序結結巴巴,並且僅在一秒鍾之后完成。 我添加了一個要打印到析構函數的字符串,因為我不確定顯 ...

我可以使用函數指針調用虛擬析構函數嗎?

[英]Can I call a virtual destructor using a function pointer?

我有類數據,可以保存指向對象的指針。 我希望以后能夠手動調用它的析構函數,為此我需要將其地址存儲在變量中,但似乎禁止使用構造函數/析構函數的地址。 有沒有辦法解決 ? ...

是否允許顯式調用析構函數,然后在具有固定生存期的變量上放置new?

[英]Is it allowed to call destructor explicitly followed by placement new on a variable with fixed lifetime?

我知道顯式調用析構函數會因為雙析構函數調用而導致未定義的行為,如下所示: 但是,如果我們將新位置稱為“復活”對象,該怎么辦? 更正式的: 如果我在某個對象上顯式調用析構函數而不是首先使用placement new構造,那么C ++中會發生什么(我對C ++ 03和C + ...

我可以顯式調用屬性析構函數,以便查看哪個引起問題嗎?

[英]Can I explicitly invoke property destructors so that I can see which one causes problems?

我猜這是一個非常令人討厭的問題-好像我班上的財產破壞者之一造成了僵局。 屬性析構函數在類析構函數之后自動調用。 我想手動調用它們,並在每一個成功之后進行日志輸入。 該問題僅發生在無法使用調試器的設備上,因此我改用日志。 但是上面的代碼實際上會導致異常,因為~io_service ...

一一銷毀單個 shared_ptr

[英]Destructing a Single shared_ptr One-by-One

我試圖一個一個地破壞 shared_ptr,但是當我破壞最后一個指針時, use_count() 變得瘋狂。 觀察我的代碼: 將在調試器中產生以下輸出: 我希望在最終銷毀時它將 use_count() 設置為 0 並釋放整數的內存。 似乎這一切都沒有發生。 當 use_count() == ...

C ++意外析構函數調用

[英]C++ unintended destructor calls

我有關於C ++數據結構的作業,但是遇到了一個奇怪的問題。 抱歉,標題有點沒用。 首先,對於家庭作業,我們提供了一個PaperRepository類的頭文件來實現。 此類通過圓形雙向鏈表保存論文信息。 每篇論文都有標題,發表論文的期刊,出版年份以及由另一個鏈接列表類(排序的鏈接列表)保存 ...

在顯式銷毀對象之后但在其內存被釋放之前調用成員函數是否合法?

[英]Is it legal to call member functions after an object has been explicitly destroyed but before its memory was deallocated?

我有這個代碼: 請注意,在對象被銷毀之后但在其內存被釋放之前,正在調用doNothing() 。 看起來“對象生命周期”已經結束,但指針仍然指向正確分配的內存。 成員函數不訪問任何成員變量。 在這種情況下,成員函數調用是否合法? ...

析構函數調用后訪問成員變量

[英]Access member variables after destructor call

我有這樣的代碼: 在顯式調用析構函數后,我的Test類的所有成員變量都可能無法訪問,因此調用foo.blub()無效。 如果我將引用存儲在局部變量中以避免訪問成員變量,那么對foo.blub()的調用是否可以保證有效? 在析構函數調用之后,編譯器是否無法優化局部變量並訪問成員變量,使 ...

在'this'指針上使用placement new是否安全

[英]Is it safe to use placement new on 'this' pointer

目前的實施 我有一個包含unique_ptr字段的類,它們依賴於另一個: 用例 這里的用例是我想將新值重新分配給指針,同時將ResourceManager保持為堆棧分配的變量,或者作為非指針類成員。 使用我當前的設置,我想像使用這樣的東西: 這甚至是一個問題的原 ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM