海口云建站模板,平台优化是什么意思,百度推广登录平台怎么收费,wordpress 网址今天一位同学问了我这样一个问题#xff1a;
int getDState() { return _dstate; }
int getDState() { return _dstate; }这两个函数有什么区别#xff1f;
这两个返回一个名为 _dstate 的成员变量或变量。函数的返回类型不同#xff0c;在C中是不允许的#xff0c;…今天一位同学问了我这样一个问题
int getDState() { return _dstate; }
int getDState() { return _dstate; }这两个函数有什么区别
这两个返回一个名为 _dstate 的成员变量或变量。函数的返回类型不同在C中是不允许的因为 C 不支持基于返回类型的重载。不能仅通过函数返回类型的不同来重载函数参数类型和数量必须不同。 int getDState() { return _dstate; } 这个版本的函数返回 _dstate 的引用。当你调用这个函数时你得到的是 _dstate 变量的引用可以对其进行读写操作。任何对返回值的修改都会直接反映到 _dstate 上。 int getDState() { return _dstate; } 这个版本的函数返回 _dstate 值的副本。调用这个函数时你得到的是 _dstate 当前值的一个副本对返回值的任何修改都不会影响 _dstate 本身。
如果需要提供 _dstate 的只读访问和可修改访问可以使用一对重载函数但它们必须在参数上有所区分比如
int getDState() const { return _dstate; } // 只读访问
int getDState() { return _dstate; } // 可修改访问在这种情况下第一个函数是 const 成员函数不会修改对象的状态因此它可以在常量对象上被调用返回 _dstate 的副本。第二个函数返回一个引用可以在非常量对象上被调用允许修改 _dstate。
在实际使用中需要确保 _dstate 是类的成员变量。