草庐IT

CONSTANTS

全部标签

c++ const 成员函数,返回一个 const 指针。但是返回的指针是什么类型的 const?

如果有人问过这个问题,我深表歉意,但是如何在C++中创建一个返回以下场景中的指针的成员函数:1.返回的指针是常量,但是里面的垃圾是可以修改的。2.里面的垃圾是常量,但是返回的指针可以修改。3.垃圾和指针都不能修改。是这样吗:int*constfunc()constconstint*func()constconstint*constfunc()const我读过的所有教程都没有涵盖这种区别。旁注:如果我的方法被声明为const,那么教程会说我不会修改参数。但是在参数是指针的情况下,这对我来说还不够清楚。我的参数是否需要像:一个。voidfunc(constint*constx)const;

c++ - constexpr const 与 constexpr 变量?

constexpr意味着const似乎很明显,因此很常见:constexprintfoo=42;//noconsthere但是如果你写:constexprchar*conststr="foo";如果传递了-Wwrite-string标志,则GCC将产生“警告:不推荐从字符串常量到‘char*’的转换”。写作:constexprconstchar*conststr="foo";解决问题。那么constexprconst和constexpr真的一样吗? 最佳答案 问题在于,在变量声明中,constexpr总是将const-ness应用于

c++ - constexpr const 与 constexpr 变量?

constexpr意味着const似乎很明显,因此很常见:constexprintfoo=42;//noconsthere但是如果你写:constexprchar*conststr="foo";如果传递了-Wwrite-string标志,则GCC将产生“警告:不推荐从字符串常量到‘char*’的转换”。写作:constexprconstchar*conststr="foo";解决问题。那么constexprconst和constexpr真的一样吗? 最佳答案 问题在于,在变量声明中,constexpr总是将const-ness应用于

c++ - 为什么 const 成员可以初始化两次?

下面是一段代码片段,可以在vs2015中编译运行而不会出错#includeusingnamespacestd;classA{public:A(intb):k(b){}//secondtimeconstintk=666;//firsttime};intmain(){Aa(555);cout输出为555。但据我所知,const对象应该只初始化一次,之后该值是不可修改的。 最佳答案 它没有被初始化两次;defaultmemberinitializer只是被忽略了。所以对于Aa(555);,a.k被初始化为555。Ifamemberhasa

c++ - 为什么 const 成员可以初始化两次?

下面是一段代码片段,可以在vs2015中编译运行而不会出错#includeusingnamespacestd;classA{public:A(intb):k(b){}//secondtimeconstintk=666;//firsttime};intmain(){Aa(555);cout输出为555。但据我所知,const对象应该只初始化一次,之后该值是不可修改的。 最佳答案 它没有被初始化两次;defaultmemberinitializer只是被忽略了。所以对于Aa(555);,a.k被初始化为555。Ifamemberhasa

c++ - #define 和 const 有什么区别?

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicates:Whywouldsomeoneuse#definetodefineconstants?differencebetweenamacroandaconstinc++C++-enumvs.constvs.#define使用#define和const创建常量有什么区别?有没有比另一个有性能优势?当然,我更喜欢使用const,但如果它有合适的优势,我会考虑使用#define。 最佳答案 #define指令是一个预处理器指令;预处理器用它们的主体替换这些宏在编译器甚

c++ - #define 和 const 有什么区别?

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicates:Whywouldsomeoneuse#definetodefineconstants?differencebetweenamacroandaconstinc++C++-enumvs.constvs.#define使用#define和const创建常量有什么区别?有没有比另一个有性能优势?当然,我更喜欢使用const,但如果它有合适的优势,我会考虑使用#define。 最佳答案 #define指令是一个预处理器指令;预处理器用它们的主体替换这些宏在编译器甚

c++ - 我真的需要为 const 对象实现用户提供的构造函数吗?

我有代码:classA{public:A()=default;private:inti=1;};intmain(){constAa;return0;}它在g++上编译良好(参见ideone),但在clang++上编译失败并出现错误:defaultinitializationofanobjectofconsttype'constA'requiresauser-provideddefaultconstructor我在LLVMbug-tracker上报告了此问题并认为它无效。我认为试图说服clang开发人员是毫无意义的。另一方面,我看不出这种限制的原因。如果C++11标准以某种方式暗示此代码

c++ - 我真的需要为 const 对象实现用户提供的构造函数吗?

我有代码:classA{public:A()=default;private:inti=1;};intmain(){constAa;return0;}它在g++上编译良好(参见ideone),但在clang++上编译失败并出现错误:defaultinitializationofanobjectofconsttype'constA'requiresauser-provideddefaultconstructor我在LLVMbug-tracker上报告了此问题并认为它无效。我认为试图说服clang开发人员是毫无意义的。另一方面,我看不出这种限制的原因。如果C++11标准以某种方式暗示此代码

c++ - 在 getter 函数中返回 const 引用或拷贝?

默认情况下,从getter函数返回拷贝(1)或引用(2)更好?classfoo{public:std::stringstr(){//(1)returnstr_;}conststd::string&str(){//(2)returnstr_;}private:std::stringstr_;};我知道2)可能会更快,但由于(N)RVO而不必如此。1)对于悬空引用更安全,但对象可能会过期或永远不会存储引用。当您编写类(class)但(尚)不知道性能和生命周期问题是否重要时,您的默认设置是什么?附加问题:当成员不是纯字符串而是vector时,游戏是否会改变? 最佳