草庐IT

const_buffers

全部标签

c++ - const virtual 和 virtual const 有什么区别?

我看到C++中的某些函数被声明为virtualconstintgetNumber();但是如果函数声明如下有什么区别呢?constvirtualintgetNumber();这两者有什么区别? 最佳答案 如前所述,没有区别。但是,请注意这两个确实不同:virtualconstintgetNumber();virtualintgetNumber()const;第一种方法中,const指的是int类型的返回值。在第二种方法中,const指的是调用该方法的对象;也就是说,this将在此方法中具有类型Tconst*,-您将只能调用const

c++ - const有什么问题?

const在C++和C++0x中的已知不足是什么? 最佳答案 const唯一的问题是它被许多开发人员严重低估。它是C++工具箱中最好的工具之一,非常锋利,而且不伤自己。 关于c++-const有什么问题?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4669870/

c++ - 用 const : Different treatment for int and double 初始化 constexpr

这个问题在这里已经有了答案:Constantexpressioninitializerforstaticclassmemberoftypedouble(2个回答)关闭2年前。以下代码编译失败liveonIdeone:#includeusingnamespacestd;intmain(){constdoublekPi=3.14;constexprdoublekPi2=2.0*kPi;cout错误信息是:prog.cpp:Infunction'intmain()':prog.cpp:6:30:error:thevalueof'kPi'isnotusableinaconstantexpres

c++ - 从迭代器获取 const_iterator

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:Obtainingconst_iteratorfromiterator我想写一个返回相应const_iterator的元函数来自iteratortemplatestructget_const_iterator{typedef???type;};get_const_iterator::type必须是constint*get_const_iterator::type必须是constint*get_const_iterator::type必须是constint*或constint*const,我不在乎get_con

c++ - 用 clang 格式放置 const

clang-format有大量关于空格的配置选项以及一些关于代码顺序(包含顺序)的配置选项。是否可以重新排序const限定符,以便将它们放置在相应类型的右侧?示例:声明constintx=0;应格式化为intconstx=0;。 最佳答案 编辑:clang-format14版之后从clang-format版本14开始,可以使用值为Right的QualifierAlignment选项。在配置文件中:QualifierAlignmentStyle:Right警告:SettingQualifierAlignmenttosomethingo

c++ - 将 const char* 转换为 QString

我必须使用类型为constchar*的函数的输出,我需要将其转换为QString。注意:在该函数内部,这些是返回constchar*的代码行char*ClassA::getData()const{returnconst_cast(_foo.c_str());}其中_foo是std::string。我尝试使用以下代码行,但总是得到空字符串(实际上不是空的,但只包含换行符并忽略所有其他字符)。QStringfoo1=QString(temp.getData());QStringfoo2=QString::fromLocal8Bit(temp.getData());QStringfoo3=Q

c++ - 在类中存储对对象的 const 引用

这听起来像是一个基本问题,但我没有找到任何全面的答案,所以在这里。考虑以下代码片段:structA{conststd::string&s;A(conststd::string&s):s(s){}};intmain(){Aa("abc");std::coutDemo.据我所知,这是UB。字符串文字“abc”在构造函数中绑定(bind)到conststd::string&,创建一个临时字符串对象。它也被绑定(bind)到引用a.s,一旦a被构造,它就会被销毁。也就是说,const引用不能链接生命周期延长。悬空引用,繁荣。在这种特殊情况下,我在ideone.com上根本看不到任何输出,但任何

c++ - 浅拷贝到 Protocol Buffer 的字节字段

假设我有一个带有字节字段的原型(prototype):messageMyProto{optionalbytesdata=1;}我无法控制的API为我提供了指向源数据及其大小的指针。我想用这些数据制作一个MyProto,而不进行深度复制。我认为这很容易做到,但似乎不可能。使用set_data可以轻松进行深度复制。Protobuf提供了一个set_allocated_data函数,但它需要一个指向std::string的指针,这对我没有帮助,因为(除非我弄错了)没有办法制作一个std::string而不进行深度复制。voidpopulateProto(void*data,size_tsiz

c++ - 为什么使用 std::async 时通过 const ref 传递速度较慢

作为学习std::async的练习我写了一个小程序,计算大vector的总和,分布了很多线程。我的代码如下#include#include#include#includetypedefunsignedlonglongintmyint;//CalculatesumofpartoftheelementsinavectormyintpartialSum(conststd::vector&v,intstart,intend){myintsum(0);for(inti=start;iv(vectorSize);std::vector>partial(nThreads);myinttot=0;//

c++ - 为什么 C++ 参数类型匹配中的 `"文字 "` encouraged to decay to ` const char*`?

我正在使用c++14中的重载运算符,我尝试匹配两种类型的参数:any-old-const-char*和a-string-literal。也就是说,我正在尝试看看我是否可以区分:constchar*run_time;和"compiletime"我编写了下面的代码,如图所示,当我尝试span>>"literal"时,它调用了constchar*函数。当我#if0-outconstchar*版本时,模板版本被调用就好了。如果我将模板版本更改为采用literal的右值引用(&&)参数,则无法编译。如果我添加constchar(&literal)[]非模板版本,constchar*版本仍然是首选