草庐IT

CONSTANTS

全部标签

Java final 与 C++ const

JavaforC++programmerstutorial说(重点是我自己的):ThekeywordfinalisroughlyequivalenttoconstinC++在这种情况下,“大致”是什么意思?他们不是完全一样吗?有什么区别(如果有的话)? 最佳答案 在C++中标记成员函数const意味着它可以在const实例上调用。Java没有与此等效的。例如:classFoo{public:voidbar();voidfoo()const;};voidtest(constFoo&i){i.foo();//finei.bar();//

c++ - const 指针有什么意义?

我说的不是指向const值的指针,而是const指针本身。我正在学习C和C++的基础知识,直到今天我才意识到指针是按值传递给函数的,这是有道理的。这意味着在函数内部,我可以使复制的指针指向其他值,而不会影响调用者的原始指针。那么有一个函数头有什么意义:voidfoo(int*constptr);在这样的函数中,你不能让ptr指向别的东西,因为它是const并且你不希望它被修改,而是这样的函数:voidfoo(int*ptr);工作也一样!因为无论如何都会复制指针,并且即使您修改拷贝,调用者中的指针也不会受到影响。那么const有什么好处呢? 最佳答案

c++ - const 指针有什么意义?

我说的不是指向const值的指针,而是const指针本身。我正在学习C和C++的基础知识,直到今天我才意识到指针是按值传递给函数的,这是有道理的。这意味着在函数内部,我可以使复制的指针指向其他值,而不会影响调用者的原始指针。那么有一个函数头有什么意义:voidfoo(int*constptr);在这样的函数中,你不能让ptr指向别的东西,因为它是const并且你不希望它被修改,而是这样的函数:voidfoo(int*ptr);工作也一样!因为无论如何都会复制指针,并且即使您修改拷贝,调用者中的指针也不会受到影响。那么const有什么好处呢? 最佳答案

c++ - 如何删除类似的 const 和非常量成员函数之间的代码重复?

假设我有以下classX我想在其中返回对内部成员的访问权限:classZ{//details};classX{std::vectorvecZ;public:Z&Z(size_tindex){//massiveamountsofcodeforvalidatingindexZ&ret=vecZ[index];//evenmorecodefordeterminingthattheZinstance//atindexis*exactly*therightsortofZ(aprocess//whichinvolvescalculatingleapyearsinwhich//religiousho

c++ - 如何删除类似的 const 和非常量成员函数之间的代码重复?

假设我有以下classX我想在其中返回对内部成员的访问权限:classZ{//details};classX{std::vectorvecZ;public:Z&Z(size_tindex){//massiveamountsofcodeforvalidatingindexZ&ret=vecZ[index];//evenmorecodefordeterminingthattheZinstance//atindexis*exactly*therightsortofZ(aprocess//whichinvolvescalculatingleapyearsinwhich//religiousho

c++ - 为什么非常量引用不能绑定(bind)到临时对象?

为什么不允许获取对临时对象的非常量引用,getx()返回哪个函数?显然,这是C++标准所禁止的但我对这种限制的目的很感兴趣,不是引用标准。structX{X&ref(){return*this;}};Xgetx(){returnX();}voidg(X&x){}intf(){constX&x=getx();//OKX&x=getx();//errorX&x=getx().ref();//OKg(getx());//errorg(getx().ref());//OKreturn0;}很明显,对象的生命周期不可能是原因,因为C++标准不禁止对对象的常量引用。很明显,上述示例中的临时对象不是

c++ - 为什么非常量引用不能绑定(bind)到临时对象?

为什么不允许获取对临时对象的非常量引用,getx()返回哪个函数?显然,这是C++标准所禁止的但我对这种限制的目的很感兴趣,不是引用标准。structX{X&ref(){return*this;}};Xgetx(){returnX();}voidg(X&x){}intf(){constX&x=getx();//OKX&x=getx();//errorX&x=getx().ref();//OKg(getx());//errorg(getx().ref());//OKreturn0;}很明显,对象的生命周期不可能是原因,因为C++标准不禁止对对象的常量引用。很明显,上述示例中的临时对象不是

c++ - const vs constexpr 变量

以下定义有区别吗?constdoublePI=3.141592653589793;constexprdoublePI=3.141592653589793;如果不是,C++11中首选哪种风格? 最佳答案 我相信是有区别的。让我们重命名它们,以便我们可以更轻松地讨论它们:constdoublePI1=3.141592653589793;constexprdoublePI2=3.141592653589793;PI1和PI2都是常量,这意味着你不能修改它们。但是onlyPI2是编译时常量。它应在编译时初始化。PI1可以在编译时或运行时初始

c++ - const vs constexpr 变量

以下定义有区别吗?constdoublePI=3.141592653589793;constexprdoublePI=3.141592653589793;如果不是,C++11中首选哪种风格? 最佳答案 我相信是有区别的。让我们重命名它们,以便我们可以更轻松地讨论它们:constdoublePI1=3.141592653589793;constexprdoublePI2=3.141592653589793;PI1和PI2都是常量,这意味着你不能修改它们。但是onlyPI2是编译时常量。它应在编译时初始化。PI1可以在编译时或运行时初始

javascript - JavaScript 中的常量 : when to use it and is it necessary?

我最近遇到了constJavaScript中的关键字。据我所知,它用于创建immutablevariables,并且我已经测试以确保它不能被重新定义(在Node.js中):constx='const';constx='not-const';//Willgiveanerror:'constant'x'hasalreadybeendefined'我意识到它尚未在所有浏览器中标准化-但我只对Node.jsV8的上下文感兴趣,我注意到某些developers/projects当var关键字可以用于相同的效果时,似乎非常喜欢它。什么时候适合使用const代替var?是否应该每次都使用一个不会出现