草庐IT

const_buffers

全部标签

c++ - const 正确性和安全 bool 习语

我还有一个与安全bool习语相关的问题:typedefvoid(Testable::*bool_type)()const;//constnecessary?voidthis_type_does_not_support_comparisons()const{}//constnecessary?operatorbool_type()const{returnok_?&Testable::this_type_does_not_support_comparisons:0;}为什么bool_type(typedef)和this_type_does_not_support_comparisons是c

c++ - 如何将 Wchar_t* 转换为 const char*

这个问题在这里已经有了答案:Howtoconvert'wchar_t*'to'constchar*'(1个回答)关闭9年前。我是c++的新手,同时在windowsCE.netcompact应用程序上工作尝试将六边形数据写入文件时CStringdataBlock1;dataBlock1="";CStringtemp;for(inti=0;i我收到此错误无法将参数1从wchar*转换为constchar*在使用下面的写入函数将六边形数据写入文件时打开out.write(myReader.dataBlock1.GetBuffer(),myReader.dataBlock1.GetLength

c++ - 从指针 vector 到 const 指针 vector 的重新解释是否安全?

这种转换类型安全吗vectora;constvector&b=reinterpret_cast&>(a);静态转换显然在这种情况下不起作用,因为模板参数正在改变。但是通过重新解释转换,我只是将常量添加到本质上相同的类型。那么对于所有实际用途来说这应该是安全的吗? 最佳答案 就像使用reinterpret_cast将引用转换为不相关的类型一样,它会产生未定义的行为,因此是不安全的,除非您将“安全”定义为“在我的编译器上工作”。 关于c++-从指针vector到const指针vector的重

c++ - Google Protocol Buffers - 缺少必填字段,即使所有字段显然都存在

我正在尝试通过TCP发送ProtocolBuffer消息,但在接收方尝试解析时出现“缺少必填字段”错误,即使显然所有字段都在那里。我在包含消息长度的消息之前发送一个4字节的header。消息定义如下:messageReplayRequest{requiredstringchannel=1;requireduint32start=2;requireduint32end=3;}在客户端,我对header进行编码并将消息序列化为vector。ReplayRequestreq;req.set_channel("channel")req.set_start(1);req.set_end(5);i

c++ - list 常量与 C++ 关键字 "const"

阅读Meyers的书(第2项“Preferconstto#define”)我想理解下面列出的一些句子:引用#defineASPECT_RATIO1.653和constaspect_ratio=1.653之间的比较,Meyers提出“......在浮点常量的情况下(例如在这个例子中)使用常量可能会产生比使用​​#define更小的代码。”问题是:Meyers的代码越小,意味着可执行文件的磁盘空间越小?为什么变小了?我认为这在32位系统上可能有效,因为在这种情况下int(或指针)需要4个字节和一个双8字节。因为ASPECT_RATIO可能不会进入符号表,所以名称会被值替换,而在其他情况下可

c++ - 从 Derived** 到 Base*const* 的转换

请在链接parashift之前阅读我的问题,我可以谷歌搜索,这种情况略有不同。这是不允许的Child**cc;Base**bb=cc;因为你可以做到*bb=newOtherChild;但是如果我们有Child**cc;constBase*const*constbb=cc;我不认为所有这些常量对于我的示例都是必需的,但只是为了确定..我认为应该工作的最低限度是Base*const*bb=cc;那你不能这样做*bb=newOtherChild;所以应该是安全的。但为什么不允许呢? 最佳答案 你混淆了两种情况:添加const上行虽然形式上

c++ - 构造函数中的 const int ref 可以安全地绑定(bind)到文字吗?

我知道该标准有一个关于延长临时对象生命周期的异常(exception),基本上说在构造函数中绑定(bind)一个const引用不会延长生命周期,但这是否也适用于文字?例如:classC{private:constint&ref;public:C(constint&in):ref{in}{}};如果我有一个函数返回这种类型的对象Cf(){Cc(2);returnc;}如果我知道c.ref的值会在调用者中未定义吗? 最佳答案 否。构造函数完成执行后,您将无法使用该引用。当非类类型的纯右值绑定(bind)到相同类型的const引用时,总是

c++ - 与 const 引用关联的临时对象的生命周期(方法链接)

考虑以下代码片段:#includestructS{~S(){std::coutOutput:2dtor即对象生命周期通过引用扩展,这在Herb的article中有解释。.但是,如果我们只更改一行代码并写成:constS&s=S().f(1);对已销毁的对象调用f(2):Output:1dtor2为什么会这样?f()的返回值不是正确的“时间性”类型吗? 最佳答案 当你这样写一个函数时......constS&f(inti)const{std::cout...您指示编译器返回constS&并且您负责确保引用的对象具有适合调用者使用的生命

c++ - 是否可以在编译时检查 const 值是否已知?

目前,我正在重写/扩展我的C++实用程序库,以考虑新的C++11功能。其中一个新增功能是模板类,它提供一组数字的最大值,希望在编译时提供。templateclassConstMax{private:templatestaticconstexprTMax(Ts...xs);templatestaticconstexprTMax(Txx){returnx;}templatestaticconstexprTMax(T1x,T2y,Ts...xs){returny>x?Max(y,xs...):Max(x,xs...);}public:staticconstTValue=Max(Xs...);

c++ - 在 C++ 中尽可能使用 const?

正如EffectiveC++一书中所述:“尽可能使用const。”,人们会假设这个定义:Vec3foperator+(Vec3f&other);会更好地定义作为Vec3foperator+(constVec3f&other)const;或者甚至更好作为constVec3foperator+(constVec3f&other)const;。或者一个包含5个const关键字的例子:constint*constFoo(constint*const&)const;当然,您应该只在可能存在的地方包含const。我问的是尽可能使用它们是一种好习惯吗?虽然它确实为您提供了更多错误安全代码,但它可能会