我有这个例子:

void SetWidth(double width);


应该是:

void SetWidth(const double width);

最佳答案

对于,
      虚空SetWidth(双倍宽度);

我们可以使用SetWidth()函数来更改可变宽度的值。但是,更改的值不会反映回调用的函数。说,

 class A_Class
 {
   public:
   void SetWidth(double width) {
      width=width+10;
      this._width=width;
      std::cout<<"IN SetWidth:"<<width;
   }
   private:
   double _width;
 };

 int main()
 {
    A_Class aObj;
    double twidth=20.9;
    aObj.SetWidth(twidth);
    std::cout<<"twidth:"<<twidth;
    return 0;
 }

 O/P: IN SetWidth:30.9
      twidth:20.9


因此,将其设置为const并没有关系,您已经在其他原型类型[void SetWidth(const double width);]中提到过。

在内部,编译器为堆栈中的“ width”变量分配内存,并将值复制到该变量。
如果使用第二个原型类型[void SetWidth(const double width);],则可确保在函数内部不能更改可变宽度为常数。

希望这可以帮助。

09-10 04:23