草庐IT

const_buffers

全部标签

c++ - 如何从析构函数调用 const 成员函数

当const对象被销毁时,有没有办法从析构函数中调用const成员函数?考虑:structMy_type{~My_type(){show();}voidshow(){cout及用法:My_typemt;constMy_typecmt;mt.show();cmt.show();输出:voidshow()voidshow()constvoidshow()voidshow()有人能解释一下为什么当cmt被销毁时没有调用const版本的show吗? 最佳答案 在const实例上调用非常量重载的原因是因为在销毁期间不考虑当前实例上的cv限定符

c++ - 枚举类型中 const 说明符的作用是什么?

enumfoo:constunsignedint{F,S,T};voidfunc(){foop;p=F;}上面的编译所以底层类型不是const类型? 最佳答案 const限定符在enum-base的规范中被忽略;它只是期望将整数类型用作枚举类型的基础类型,指定const(或volatile)没有多大意义。(强调我的)colon(:),followedbyatype-specifier-seqthatnamesanintegraltype(ifitiscv-qualified,qualificationsareignored)that

c++ - 枚举类型中 const 说明符的作用是什么?

enumfoo:constunsignedint{F,S,T};voidfunc(){foop;p=F;}上面的编译所以底层类型不是const类型? 最佳答案 const限定符在enum-base的规范中被忽略;它只是期望将整数类型用作枚举类型的基础类型,指定const(或volatile)没有多大意义。(强调我的)colon(:),followedbyatype-specifier-seqthatnamesanintegraltype(ifitiscv-qualified,qualificationsareignored)that

c++ - 为什么在 C++ 中允许对 const 全局变量进行多重定义,而在 C 中却不允许?

由于单一定义规则,在C或C++中不允许对全局变量进行多重定义。但是,在C++中,一个const全局变量可以在多个编译单元中定义而不会出错。这与C中的不同。为什么C++允许,而C不允许?与C相比,为什么C++中const全局变量的用法和行为与非const全局变量有这种不同?C++和C在const方面发生了什么?例如,这在C++中是允许的,但在C中是错误的://Foo.cppconstintFoo=99;//Main.cppconstintFoo=99;intmain(){cout这对C来说很好,但对C++来说是错误的://Foo.cppconstintFoo=99;//Main.cppe

c++ - 为什么在 C++ 中允许对 const 全局变量进行多重定义,而在 C 中却不允许?

由于单一定义规则,在C或C++中不允许对全局变量进行多重定义。但是,在C++中,一个const全局变量可以在多个编译单元中定义而不会出错。这与C中的不同。为什么C++允许,而C不允许?与C相比,为什么C++中const全局变量的用法和行为与非const全局变量有这种不同?C++和C在const方面发生了什么?例如,这在C++中是允许的,但在C中是错误的://Foo.cppconstintFoo=99;//Main.cppconstintFoo=99;intmain(){cout这对C来说很好,但对C++来说是错误的://Foo.cppconstintFoo=99;//Main.cppe

c++ - 将 Protocol Buffer 定义拆分为多个 .proto 文件

我想在另一个协议(protocol)文件中包含一个协议(protocol)定义文件。例如://base.proto:messageP_EndPoint{requiredint32id=1;requiredstringhost=2;requiredint32port=3;}然后在另一个文件中:communication.proto://somehowinclude`base.proto'//...messageP_CommunicationProtocol{requiredCP_MessageTypetype=1;optionalint32id=2;optionalP_EndPointi

c++ - 将 Protocol Buffer 定义拆分为多个 .proto 文件

我想在另一个协议(protocol)文件中包含一个协议(protocol)定义文件。例如://base.proto:messageP_EndPoint{requiredint32id=1;requiredstringhost=2;requiredint32port=3;}然后在另一个文件中:communication.proto://somehowinclude`base.proto'//...messageP_CommunicationProtocol{requiredCP_MessageTypetype=1;optionalint32id=2;optionalP_EndPointi

c++ - 模板参数中的 "T"和 "const T"有什么区别吗?

以下两种语法有什么区别:templatestructA;//(1)和templatestructA;//(2)关于何时使用每种语法的任何一般准则? 最佳答案 没有。§14.1[temp.param]p5[...]Thetop-levelcv-qualifiersonthetemplate-parameterareignoredwhendeterminingitstype. 关于c++-模板参数中的"T"和"constT"有什么区别吗?,我们在StackOverflow上找到一个类似的问题

c++ - 模板参数中的 "T"和 "const T"有什么区别吗?

以下两种语法有什么区别:templatestructA;//(1)和templatestructA;//(2)关于何时使用每种语法的任何一般准则? 最佳答案 没有。§14.1[temp.param]p5[...]Thetop-levelcv-qualifiersonthetemplate-parameterareignoredwhendeterminingitstype. 关于c++-模板参数中的"T"和"constT"有什么区别吗?,我们在StackOverflow上找到一个类似的问题

c++ - const_iterator 与迭代器的比较是否定义明确?

考虑以下代码:#include#includeintmain(){std::vectorvec{1,2,3,5};for(autoit=vec.cbegin();it!=vec.cend();++it){std::cout这里我引入了一个错字:在比较中我调用了vec.end()而不是vec.cend()。这似乎与gcc5.2一样工作。但它实际上是根据标准明确定义的吗?iterator和const_iterator可以安全地比较吗? 最佳答案 令人惊讶的是,C++98和C++11并没有说可以将iterator与const_iterat