草庐IT

const_buffers

全部标签

c++ - 为什么将 ‘float**’ 转换为 ‘const float**’ 时出现错误?

我有一个接收float**作为参数的函数,我尝试将其更改为采用constfloat**。编译器(g++)不喜欢,发出:从‘float**’到‘constfloat**’的无效转换这对我来说毫无意义,我知道(并已验证)我可以将char*传递给采用constchar*的函数,所以为什么不使用constfloat**? 最佳答案 见WhyamIgettinganerrorconvertingaFoo**→constFoo**?BecauseconvertingFoo**→constFoo**wouldbeinvalidanddangero

c++ - 在 C++ 中初始化 const 字符串的静态 const 数组

我在初始化常量字符串的常量数组时遇到问题。来自week.h(仅显示相关部分):classWeek{private:staticconstchar*const*days={"mon","tue","wed","thur","fri","sat","sun"};};编译时出现错误“标量初始化程序中的多余元素”。我试着让它类型为constchar**,以为我搞砸了第二个const位置,但我得到了同样的错误。我做错了什么? 最佳答案 首先,你需要一个数组,而不是一个指针。staticconstchar*constdays[]={"mon",

c++ - 在 C++ 中初始化 const 字符串的静态 const 数组

我在初始化常量字符串的常量数组时遇到问题。来自week.h(仅显示相关部分):classWeek{private:staticconstchar*const*days={"mon","tue","wed","thur","fri","sat","sun"};};编译时出现错误“标量初始化程序中的多余元素”。我试着让它类型为constchar**,以为我搞砸了第二个const位置,但我得到了同样的错误。我做错了什么? 最佳答案 首先,你需要一个数组,而不是一个指针。staticconstchar*constdays[]={"mon",

c++ - 为什么 const auto &p{nullptr} 工作,而 auto *p{nullptr} 在 C++17 中不起作用?

这个定义有效:constauto&b{nullptr};虽然失败:auto*b{nullptr};我尝试在VisualC++、GCC和Clang中编译它。他们都提示“无法推断类型”。在第二种情况下,不应该将b推导出为像std::nullptr_t这样的类型吗? 最佳答案 因为你声明b为指针,并初始化为空指针。但是一个空指针你不说什么类型的数据,所以编译器无法推断出类型。如果您希望b成为std::nullptr_t对象,则应去掉星号:autob{nullptr}; 关于c++-为什么con

c++ - 为什么 const auto &p{nullptr} 工作,而 auto *p{nullptr} 在 C++17 中不起作用?

这个定义有效:constauto&b{nullptr};虽然失败:auto*b{nullptr};我尝试在VisualC++、GCC和Clang中编译它。他们都提示“无法推断类型”。在第二种情况下,不应该将b推导出为像std::nullptr_t这样的类型吗? 最佳答案 因为你声明b为指针,并初始化为空指针。但是一个空指针你不说什么类型的数据,所以编译器无法推断出类型。如果您希望b成为std::nullptr_t对象,则应去掉星号:autob{nullptr}; 关于c++-为什么con

c++ - static const double 不能有类内初始化程序。为什么会这样?

以下代码的问题是“constdouble”类型的静态成员不能具有类内初始化程序。为什么仅适用于以下代码中的“constdouble”?请帮帮我。classsample{staticconstcharmc='?';staticconstdoublemd=2.2;staticconstboolmb=true;};constcharsample::mc;constdoublesample::md;constboolsample::mb;intmain(){} 最佳答案 C++03语言标准实现的逻辑基于以下基本原理。在C++中,initia

c++ - static const double 不能有类内初始化程序。为什么会这样?

以下代码的问题是“constdouble”类型的静态成员不能具有类内初始化程序。为什么仅适用于以下代码中的“constdouble”?请帮帮我。classsample{staticconstcharmc='?';staticconstdoublemd=2.2;staticconstboolmb=true;};constcharsample::mc;constdoublesample::md;constboolsample::mb;intmain(){} 最佳答案 C++03语言标准实现的逻辑基于以下基本原理。在C++中,initia

c++ - "const"只是意味着只读还是更多?

const的真正含义是什么?只读对我来说似乎封装了它的含义,但是,我不确定我是对的。如果只读和const不同,谁能告诉我为什么?提出这个问题的原因是thisanswer他说const“just”在C中意味着只读。我认为这是allconst的意思,无论它是C还是C++.他是什么意思?为了回答C与C++中const的具体差异,我创建了一个新问题:Howdoes"const"differinCandC++?根据R..的建议。 最佳答案 通过将变量声明为const,您表明编译器您无意修改该变量。但这并不意味着其他人没有!它只是为了允许一些优

c++ - "const"只是意味着只读还是更多?

const的真正含义是什么?只读对我来说似乎封装了它的含义,但是,我不确定我是对的。如果只读和const不同,谁能告诉我为什么?提出这个问题的原因是thisanswer他说const“just”在C中意味着只读。我认为这是allconst的意思,无论它是C还是C++.他是什么意思?为了回答C与C++中const的具体差异,我创建了一个新问题:Howdoes"const"differinCandC++?根据R..的建议。 最佳答案 通过将变量声明为const,您表明编译器您无意修改该变量。但这并不意味着其他人没有!它只是为了允许一些优

c++ - 遵循函数/方法签名的 const 是什么意思?

这个问题在这里已经有了答案:Meaningof'const'lastinafunctiondeclarationofaclass?(12个回答)关闭5年前。根据MSDN:“当跟随成员函数的参数列表时,const关键字指定该函数不会修改调用它的对象。”有人可以澄清一下吗?这是否意味着该函数不能修改任何对象的成员?boolAnalogClockPlugin::isInitialized()const{returninitialized;} 最佳答案 表示该方法不修改成员变量(声明为mutable的成员除外),因此可以在类的常量实例上调用