草庐IT

Constants

全部标签

c++ - 返回 shared_ptr<> 的成员函数的 const 正确性

如果我有课classfoo{private:std::shared_ptrm_data;public:std::shared_ptrGetData(){returnm_data;}}我相信std::shared_ptr应该转换为std::shared_ptr并共享同一个对象,但函数的const正确性是什么?IE这是有效的吗?std::shared_ptrGetData()const; 最佳答案 函数会修改对象的内部状态吗?没有。*函数是否允许其调用者(或其他外部环境)修改访问对象的内部状态?没有。这意味着将其标记为const是安全的

c++ - 返回 shared_ptr<> 的成员函数的 const 正确性

如果我有课classfoo{private:std::shared_ptrm_data;public:std::shared_ptrGetData(){returnm_data;}}我相信std::shared_ptr应该转换为std::shared_ptr并共享同一个对象,但函数的const正确性是什么?IE这是有效的吗?std::shared_ptrGetData()const; 最佳答案 函数会修改对象的内部状态吗?没有。*函数是否允许其调用者(或其他外部环境)修改访问对象的内部状态?没有。这意味着将其标记为const是安全的

c++ - 为什么对指针参数包进行 const 限定是错误的?

当实现一个接受指向Ts...的指针参数包的函数时,为什么我不能像常规的那样对指针进行const限定参数?我在最新的GCC和Clang上得到一个不匹配的签名错误,我不明白为什么,因为指针是const只是一个实现细节(因此它对于常规参数是合法的)。templateclassC{voidf(int*);voidg(Ts*...);};templatevoidC::f(int*const){}//LegaltemplatevoidC::g(Ts*const...){}//Compilererror我收到此错误:prog.cc:12:16:error:out-of-linedefinitiono

c++ - 为什么对指针参数包进行 const 限定是错误的?

当实现一个接受指向Ts...的指针参数包的函数时,为什么我不能像常规的那样对指针进行const限定参数?我在最新的GCC和Clang上得到一个不匹配的签名错误,我不明白为什么,因为指针是const只是一个实现细节(因此它对于常规参数是合法的)。templateclassC{voidf(int*);voidg(Ts*...);};templatevoidC::f(int*const){}//LegaltemplatevoidC::g(Ts*const...){}//Compilererror我收到此错误:prog.cc:12:16:error:out-of-linedefinitiono

c++ - const 对和 const 对之间的区别

在C++中,std::pair之间的行为有什么区别?和conststd::pair? 最佳答案 核心区别在于它们是不同的不相关类型(它们之间有一些隐式转换)。voidf(std::pairconst&);std::stringlongstring();intmain(){std::pairpc=std::make_pair(longstring(),longstring());f(pc);conststd::paircp=std::make_pair(longstring(),longstring());f(cp);}虽然存在允许f

c++ - const 对和 const 对之间的区别

在C++中,std::pair之间的行为有什么区别?和conststd::pair? 最佳答案 核心区别在于它们是不同的不相关类型(它们之间有一些隐式转换)。voidf(std::pairconst&);std::stringlongstring();intmain(){std::pairpc=std::make_pair(longstring(),longstring());f(pc);conststd::paircp=std::make_pair(longstring(),longstring());f(cp);}虽然存在允许f

c++ - C++ 中的 constexpr 是什么?

我真的对constexpr概念感到困惑,因为我读过constexpr是在编译时评估的,因此与普通const相比,它对于性能优化很有用.constexprinti=0;constexprint&ri=i;以上代码返回错误“invalidinitializationofreferenceoftype'int&'fromexpressionof'constint'”,为什么?另外,下一段代码有错误:constexprinti=0;constexprint*ri=&i;如果我将constexpr关键字替换为const,以上所有操作都正常。 最佳答案

c++ - C++ 中的 constexpr 是什么?

我真的对constexpr概念感到困惑,因为我读过constexpr是在编译时评估的,因此与普通const相比,它对于性能优化很有用.constexprinti=0;constexprint&ri=i;以上代码返回错误“invalidinitializationofreferenceoftype'int&'fromexpressionof'constint'”,为什么?另外,下一段代码有错误:constexprinti=0;constexprint*ri=&i;如果我将constexpr关键字替换为const,以上所有操作都正常。 最佳答案

c++ - const 引用默认值

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:howtoinitializefunctionargumentsthatareclasseswithdefaultvalue#includevoidfoo1(conststd::string&s=std::string());voidfoo2(std::string&s=std::string());voidfoo3(conststd::strings=std::string());voidfoo4(std::strings=std::string());erroratfoo2():defaultargumen

c++ - const 引用默认值

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:howtoinitializefunctionargumentsthatareclasseswithdefaultvalue#includevoidfoo1(conststd::string&s=std::string());voidfoo2(std::string&s=std::string());voidfoo3(conststd::strings=std::string());voidfoo4(std::strings=std::string());erroratfoo2():defaultargumen