草庐IT

CONSTANTS

全部标签

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++ - 为什么可以在构造函数中修改 const 成员?

我很好奇为什么可以在构造函数中修改const成员。初始化中是否有任何标准规则可以覆盖成员的“常量”?structBar{constintb=5;//defaultmemberinitializationBar(intc):b(c){}};Bar*b=newBar(2);//Problem:Bar::bismodifiedto2//wasexpectingittobeanerror有什么想法吗? 最佳答案 这不是修改(或赋值),而是initialization.例如structBar{constintb=5;//initializat

c++ - 为什么可以在构造函数中修改 const 成员?

我很好奇为什么可以在构造函数中修改const成员。初始化中是否有任何标准规则可以覆盖成员的“常量”?structBar{constintb=5;//defaultmemberinitializationBar(intc):b(c){}};Bar*b=newBar(2);//Problem:Bar::bismodifiedto2//wasexpectingittobeanerror有什么想法吗? 最佳答案 这不是修改(或赋值),而是initialization.例如structBar{constintb=5;//initializat

c++ - 在 C++ 中将非 const 转换为 const

我知道您可以使用const_cast将const强制转换为非const。但是,如果你想将非const转换为const,你应该使用什么? 最佳答案 const_cast可用于移除或向对象添加常量。当您想要调用特定的重载时,这会很有用。人为的例子:classfoo{inti;public:foo(inti):i(i){}intbar()const{returni;}intbar(){//notconsti++;returnconst_cast(this)->bar();}}; 关于c++-在

c++ - 在 C++ 中将非 const 转换为 const

我知道您可以使用const_cast将const强制转换为非const。但是,如果你想将非const转换为const,你应该使用什么? 最佳答案 const_cast可用于移除或向对象添加常量。当您想要调用特定的重载时,这会很有用。人为的例子:classfoo{inti;public:foo(inti):i(i){}intbar()const{returni;}intbar(){//notconsti++;returnconst_cast(this)->bar();}}; 关于c++-在

c++ - 把 "const"类型前面的 "primitive"去掉会更好吗?

在代码审查过程中,我的一位同事向我提到,在header中用作函数参数的“原始类型”前面的“const”是没有意义的,他建议删除这些“const”。他建议在这种情况下只在源文件中使用“const”。原始类型是指“int”、“char”、“float”等类型。以下是示例。example.hintProcessScore(constintscore);example.ccintProcessScore(constintscore){//Dosomecalculationusingscorereturnsome_value;}他的建议如下:example.hintProcessScore(in

c++ - 把 "const"类型前面的 "primitive"去掉会更好吗?

在代码审查过程中,我的一位同事向我提到,在header中用作函数参数的“原始类型”前面的“const”是没有意义的,他建议删除这些“const”。他建议在这种情况下只在源文件中使用“const”。原始类型是指“int”、“char”、“float”等类型。以下是示例。example.hintProcessScore(constintscore);example.ccintProcessScore(constintscore){//Dosomecalculationusingscorereturnsome_value;}他的建议如下:example.hintProcessScore(in

c++ - C++ 中的声明

据我所知,C++中的声明/初始化是带有“基本类型”的语句,后跟逗号分隔的声明符列表。考虑以下声明:inti=0,*constp=&i;//Legal,theso-calledbasetypeis'int'.//iisanintwhilepisaconstpointertoanint.intj=0,constc=2;//Error:C++requiresatypespecifierforalldeclarations.//Intentionwastodeclarejasanintandcanasconstint.int*constp1=nullptr,i1=0;//p1isaconstp