cost 276 ms
現在使用 c++ 中的概念重載通用引用更安全 20

[英]Is overloading on universal references now much safer with concepts in c++ 20

在 Scott Meyers 的“Effective Modern C++”一書中,給出了(第 26/27 項)“避免在通用引用上重載”的建議。 他這樣做的理由是,在幾乎所有對包含通用引用的重載 function 的調用中,編譯器都會解析為通用引用,即使這通常不是您打算解析的 function。 ...

大括號和圓括號中的初始化器 - 來自 Modern Effective C++ 中的第 7 項

[英]Initializer in braces and parentheses - From Item 7 in Modern Effective C++

在《Effective Modern Cpp》一書的Chapter7,Item 7中,討論了創建對象時()和{}的區別。 然而,當我編譯並運行本章中列出的一些代碼時,我發現代碼的行為與注釋描述的不同。 我必須指出,我用於測試的代碼是我編寫的,因此與書中的原始代碼不完全相同,但它更簡單,足以涵蓋我的觀 ...

使用 std::make_shared 后可以緩存嗎?

[英]Can I cache after using std::make_shared?

我正在閱讀 Effective Modern C++ (Scott Meyers)並嘗試第 21 項中的一些內容。這本書說使用std::make_shared的副作用是 memory 在所有shared_ptr和weak_ptr都消失之前不能被釋放(因為控制塊與內存一起分配)。 我預計這將意味着, ...

遞歸 constexpr function

[英]Recursive constexpr function

我正在閱讀 Effective Modern C++ 並想嘗試使用 const 表達式的非常基本的 function。 我的 C++ 技能真的不是很好,但是我想不通這個基本代碼有什么問題: 如評論中所述,如果我使用 return x == 43337,則此代碼有效,但任何較大的值都會導致分段錯誤。 ...

位置 function 通過就地構造而不是通過分配向容器添加新元素是什么意思?

[英]What does it mean that the emplacement function adds a new element to a container via construction in place istead of via assignment?

在Effective Modern C++的第 41 項中,Scott Meyers 提到了這種差異及其對插入效率的影響。 我對此有一些疑問,但在提出問題之前,我需要了解這兩種添加元素的方式之間的區別是什么。 考慮書中的代碼示例:std::vector<std::string> vs; ...

關於不允許重復的容器的放置和插入效率不同的混淆

[英]Confusion about the different efficiency between emplacement and insertion for containers not allowing duplicates

在Effective Modern C++的第 41 項中,以下情況之一是使 emplacement 函數有可能比插入 conterparts 性能更高的情況之一: 容器不太可能拒絕新值作為重復項原因是,考慮到 arguments 給試圖插入容器的對象的構造函數, emplace function ...

通過 init 捕獲的默認 lambda 捕獲模式會是什么樣的?

[英]What would a default lambda capture mode via init capture be like?

使用 lambda,在 C++11 中,我們可以將默認捕獲模式設置為按值/按引用,例如[=] / [&] ,對於某些變量,可選地后跟顯式捕獲,按引用/按值,例如[=,&this_is_by_ref]或[&,this_is_by_value] 。 在 C++14 中,我們也可 ...

什么是 EMC++ 中提到的“源 object 是左值”場景,其中移動語義沒有提供效率增益

[英]What is the “source object is lvalue” scenario, mentioned in EMC++, where move semantics offer no efficiency gain

Effective Modern C++ 中的第 29 項,Scott Meyers 列出了移動語義不會提高代碼性能的三種場景, […] 移動語義對你沒有好處: 無移動操作:要從中移動的 object 無法提供移動操作 […] 移動不快: […] 移動操作不比其復制操作快。 移動不可用:上下文 ...

了解 Scott Meyers 的第三個 std::weak_ptr 示例

[英]Understanding of Scott Meyers' third example of std::weak_ptr

Effective Modern C++第 137 頁的最后一個例子描繪了一個數據結構的場景,其中包含對象A 、 B和C ,通過std::shared_ptr以下列方式相互連接: std::shared_ptr std::shared_ptr A ──────────────── ...

關於std :: cout,為什么要使用“ extern”而不是“ singleton pattern”

[英]About std::cout, why use “extern” rether than “singleton pattern”

我讀了有效的C ++ ,其中提到了項目04 通過將非本地靜態對象替換為本地靜態對象,避免跨翻譯單元的初始化順序問題。 我認為“全局且只有一個對象”應該是單例模式,而不是在我閱讀此項目后的外部對象。 例如I / O對象(std :: cout) 但是std :: co ...

strncpy / memcpy / memmove是逐字節還是以其他方式有效地復制數據?

[英]Do strncpy/memcpy/memmove copy the data byte by byte or in another efficiently way?

眾所周知,在x86 / x86_64這樣的多字節字計算機中,逐字復制/移動大量內存(每步4或8個字節)比逐字節更有效。 我很好奇strncpy / memcpy / memmove會做什么,以及它們如何處理內存字對齊。 ...

有效的C ++:第41項 - 關於隱式接口的混淆

[英]Effective C++: Item 41 - confusion about Implicit interfaces

我正在閱讀有效的C ++,第41項,標題為“理解隱式接口和編譯時多態性” ,它給出了這個例子,接下來是一個解釋,但我不理解這一部分。 ...,T必須支持一個size成員函數,.....,但是這個成員函數不需要返回一個整數類型。 它甚至不需要返回數字類型。 就此而言,它甚至不需要返 ...

如何了解有效C ++中的“虛擬構造函數的實現”

[英]How to understand “implementations of virtual constructors” in Effective C++

在有效的C ++ 3rd,第31項,p146-p147中,它說 這一切都發生在包含虛擬構造函數實現的文件內部的幕后。 我不確定在這句話中如何理解虛擬構造函數。 據我所知,C ++中沒有強大的構造函數。 那么,此語句在有效C ++中是否是一個錯誤? 或者,此虛擬 ...

在沒有返回值優化的情況下將兩個對象添加到一起時會創建多少個臨時對象?

[英]How many temporary objects are created when two objects are added together without the return value optimization?

在閱讀Scott Meyers所着的“更有效的C ++”一書的第20和22項后,我決定提出這個問題。 假設你寫了一個代表有理數的類: class Rational { public: Rational(int numerator = 0, int denominator = 1) ...

參考推導如何工作?

[英]How reference deduce works?

可以復制到此 。 我讀了《 有效的現代C ++》 。 在Item 1下,我找到了一個可供普遍參考的案例: 對於最后一個例子, f(27); 我在VS2013下進行了測試。 這是輸出: 我發現在沒有std::forward<T>(param)的模板函數中 ...

“Effective Modern C ++”中的C ++默認移動操作

[英]C++ default move operation in “Effective Modern C++”

第17項:了解特殊成員函數生成。 移動操作僅針對缺少類別生成 顯式聲明了移動操作,復制操作或析構函數。 現在,當我提到移動操作移動構建時 或移動 - 分配數據成員或基類 並不保證會實際采取行動。 實際上,“成員行動”更像是成員 移動請求,因為未啟用移動的類型 ...

推導類型

[英]Deducing the types

我在遍歷Scott Meyer的《 Effective Modern C ++》時試圖理解類型推導。 考慮下面的代碼片段: 他說,由於paramType是引用,因此我們可以按照兩步過程來推導T的類型: 忽略expr引用(如果有的話)(即x , cx和rx ) 模式 ...

如何理解此聲明中的typedef

[英]How to understand the typedef in this declaration

最近,我讀了有效C ++這本書,第35項中有關於typedef的聲明使我感到困惑。 所以我的第一個問題是:為什么作者在這里使用前瞻性聲明? 有什么具體原因嗎? 我的第二個問題是:我如何理解typedef聲明,以及如何使用它? 我只知道像typedef int MyInt; ...


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