草庐IT

constness

全部标签

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时,游戏是否会改变? 最佳

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时,游戏是否会改变? 最佳

c++ - 在 C 和 C++ 中,const 指针对指针的含义是什么?

我知道从右到左阅读声明的经验法则,我很确定我知道发生了什么,直到一位同事告诉我:constMyStructure**ppMyStruct;表示“ppMyStruct是指向(可变)MyStructure的const指针的指针”(在C++中)。我原以为它的意思是“ppMyStruct是指向constMyStructure的指针的指针”。我在C++规范中寻找答案,但显然我不是很擅长...in在C++中是什么意思,在C中是什么意思? 最佳答案 你的同事错了。那是一个(非常量)指针,指向一个(非常量)指向constMyStructure的指针

c++ - 在 C 和 C++ 中,const 指针对指针的含义是什么?

我知道从右到左阅读声明的经验法则,我很确定我知道发生了什么,直到一位同事告诉我:constMyStructure**ppMyStruct;表示“ppMyStruct是指向(可变)MyStructure的const指针的指针”(在C++中)。我原以为它的意思是“ppMyStruct是指向constMyStructure的指针的指针”。我在C++规范中寻找答案,但显然我不是很擅长...in在C++中是什么意思,在C中是什么意思? 最佳答案 你的同事错了。那是一个(非常量)指针,指向一个(非常量)指向constMyStructure的指针

c++ - 使用 std::cin 初始化 const 变量有什么技巧吗?

常见的std::cin用法intX;cin>>X;这样做的主要缺点是X不能是const。它可以很容易地引入错误;我正在寻找一些技巧来创建一个const值,并且只写入一次。天真的解决方案//NaiveintX_temp;cin>>X_temp;constintX=X_temp;你显然可以通过将X更改为const&;来改进它。仍然可以修改原始变量。我正在寻找一个简短而聪明的解决方案来解决这个问题。我确信我不是唯一一个会从这个问题的良好答案中受益的人。//编辑:我希望解决方案能够轻松扩展到其他类型(比如说,所有POD、std::string和可移动复制具有简单构造函数的类)(如果没有意义,请

c++ - 使用 std::cin 初始化 const 变量有什么技巧吗?

常见的std::cin用法intX;cin>>X;这样做的主要缺点是X不能是const。它可以很容易地引入错误;我正在寻找一些技巧来创建一个const值,并且只写入一次。天真的解决方案//NaiveintX_temp;cin>>X_temp;constintX=X_temp;你显然可以通过将X更改为const&;来改进它。仍然可以修改原始变量。我正在寻找一个简短而聪明的解决方案来解决这个问题。我确信我不是唯一一个会从这个问题的良好答案中受益的人。//编辑:我希望解决方案能够轻松扩展到其他类型(比如说,所有POD、std::string和可移动复制具有简单构造函数的类)(如果没有意义,请

c++ - 何时使用 const char * 以及何时使用 const char []

我知道它们是不同的,我知道它们有何不同,并且我阅读了所有关于char*与char[]的问题但所有这些答案都无法说明何时应该使用它们。所以我的问题是:什么时候使用constchar*text="text";你什么时候使用constchartext[]="text";有什么指导方针或规则吗?举个例子,哪个更好:voidwithPointer(){constchar*sz="hello";std::cout(我知道std::string也是一种选择,但我特别想了解char指针/数组) 最佳答案 两者明显不同,首先:First创建一个指针。

c++ - 何时使用 const char * 以及何时使用 const char []

我知道它们是不同的,我知道它们有何不同,并且我阅读了所有关于char*与char[]的问题但所有这些答案都无法说明何时应该使用它们。所以我的问题是:什么时候使用constchar*text="text";你什么时候使用constchartext[]="text";有什么指导方针或规则吗?举个例子,哪个更好:voidwithPointer(){constchar*sz="hello";std::cout(我知道std::string也是一种选择,但我特别想了解char指针/数组) 最佳答案 两者明显不同,首先:First创建一个指针。

c++ - 无法将 'this' 指针从 'const Line' 转换为 'Line &' 解释?

这个方法:boolPoint::Intersects(constLine&line)const{return(line.ContainsPoint(*this,false));}导致此错误:无法将“this”指针从“constLine”转换为“Line&”这种变化:boolPoint::Intersects(constLine&line)const{returnconst_cast(line).ContainsPoint(*this,false);}修复了错误,但似乎不是解决问题的正确方法。为什么原始方法被认为是错误的?如果有帮助,ContainsPoint(constPoint&po

c++ - 无法将 'this' 指针从 'const Line' 转换为 'Line &' 解释?

这个方法:boolPoint::Intersects(constLine&line)const{return(line.ContainsPoint(*this,false));}导致此错误:无法将“this”指针从“constLine”转换为“Line&”这种变化:boolPoint::Intersects(constLine&line)const{returnconst_cast(line).ContainsPoint(*this,false);}修复了错误,但似乎不是解决问题的正确方法。为什么原始方法被认为是错误的?如果有帮助,ContainsPoint(constPoint&po