草庐IT

c++ - 关于 Copy-On-Write 和 shared_ptr 的困惑

我已经在网上搜索并通读了有关shared_ptr的Boost文档。SO上有一个响应,说写时复制(COW)的shared_ptr很糟糕,TR!已将其从字符串库中删除。大多数关于SO的建议都说使用shared_ptr而不是常规指针。该文档还讨论了使用std::unique()来制作COW指针,但我还没有找到任何示例。谈论的是拥有一个为您执行COW的智能指针,还是让您的对象对克隆对象使用新的shared_ptr然后修改克隆对象?示例:食谱和配料structNutrients;structIngredient{Ingredient(conststd::string&new_title=std:

c++ - C/C++ 逗号运算符让我困惑。语言律师?

我在Boost文档的示例中遇到了这段代码:std::vectorinput;input+=1,2,3,4,5,6,7,8,9;真可爱。Boost有一个operator+=的模板,它利用了逗号在大多数情况下是一个运算符这一事实。(明智的做法是,C++不允许黑客重载“operator,”。)我也喜欢写可爱的代码,所以我尝试了一些逗号运算符。我发现了一些对我来说很奇怪的东西。你认为下面的代码会打印出什么?#includeintmain(){inti;i=1,2;std::cout你猜对了。VC++2012打印“1、2”。这是怎么回事?[编辑:我应该更准确。应该说C++不允许重载int列表中的

c++ - 构造函数困惑

我一直认为我对C++非常了解,但有时即使是最基本的东西我也会感到惊讶。在以下场景中,我对为什么调用构造函数Derived::Derived(constBase&)感到困惑:classBase{};classDerived:publicBase{public:Derived(){}Derived(constBase&b){std::cout输出:CalledDerived::Derived(constBase&b),表示调用了Derived中的第二个构造函数。现在,我认为我非常了解C++,但我不明白为什么会调用该构造函数。我理解整个“四规则”概念,我认为表达式d=b会做两件事之一:要么1

c++ - 对 vector 感到困惑

之前,我一直在学校学习编码(vector、字符、二维数组,没什么特别的),并且一直在CodeBlocks中使用C++进行编码。一个月前,我开始学习C++Primer。我现在在使用vector类型,但我很困惑。当我过去使用vector时,我从来没有包含任何其他库,我声明vector是这样的:#includeintmain(){intv[10];return0;}现在vector的定义方式要复杂得多,使用vector库,在定义中提及元素类型等等。我只是想知道为什么我认为相当容易的主题会有如此大的差异。这些vector到底有什么问题? 最佳答案

C++字符串文字仍然令人困惑

我一直在阅读一些关于Unicode的文章,并意识到我仍然对如何处理它感到困惑。作为Windows平台上的c++程序员,给我的纪律几乎与任何老师都一样:始终使用Unicode字符集;将其模板化或尽可能使用TCHAR;比char、std::string更喜欢wchar_t、std::wstring。#include#includetypedefstd::basic_stringtstring;//...staticconstchar*consts_hello="핼로";//badstaticconstwchar_t*consts_wchar_hello=L"핼로"//betterstati

c++ - 关于静态数据成员类内初始化的困惑

我正在阅读lippman的c++primer,第1页。303他们给了这个:classAccount{private:staticconstexprintperiod=30;doubledaily_tbl[period];}Ifthememberisusedonlyincontextswherethecompilercansubstitutethemember'svalue,thenaninitializedconstorconstexprstaticneednotbeseparatelydefined.However,ifweusethememberinacontextinwhicht

c++ - 继承困惑

好吧,我一直在研究游戏引擎,但遇到了一个问题......目前我有一个类层次结构(图像->动画->对象),所有这些类都有一个方法get_type()我遇到了这个问题:如果我使用new关键字或静态声明一个派生类,我会得到想要的结果:objectinstance;coutget_type();从上面的代码中,控制台输出3。该方法在对象中声明为:图像类:classimage{public:virtualintget_type();};intobject::get_type(){return1;}动画类:classanimation:publicimage{public:virtualintge

c++ - 对数组的元素编号感到困惑是-1

我正在阅读这里的代码:https://github.com/chenshuo/muduo/blob/master/muduo/base/Date.cc但我对这两行感到困惑:charrequire_32_bit_integer_at_least[sizeof(int)>=sizeof(int32_t)?1:-1];和(void)require_32_bit_integer_at_least;//nowarningplease他们的目的是什么?charrequire_32_bit_integer_at_least[sizeof(int)>=sizeof(int32_t)?1:-1];int

c++ - 关于CRTP静态多态的困惑

我正在努力研究CRTP。周围有一些很好的资源,包括这个论坛,但我想我对静态多态性的基础知识有些困惑。查看以下维基百科条目:templatestructBase{voidimplementation(){//...static_cast(this)->implementation();//...}staticvoidstatic_func(){//...T::static_sub_func();//...}};structDerived:publicBase{voidimplementation();staticvoidstatic_sub_func();};我知道这有助于我在派生类中有

c# - 对 DLL 入口点感到困惑(入口点未找到异常)

我正在努力学习如何在C#中使用DLL。我有一个非常简单的DLL,仅用于测试基础知识。//MainForm.csusingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Runtime.InteropServices;namespaceDLL_Test{publicpartialclassF