首页 > 后端开发 > C++ > 如何在 C 成员函数中使用成员变量作为默认参数?

如何在 C 成员函数中使用成员变量作为默认参数?

Patricia Arquette
发布: 2024-11-11 08:58:03
原创
679 人浏览过

How Can You Use Member Variables as Default Arguments in C   Member Functions?

在 C 中使用成员变量作为默认参数

在 C 中,您可能需要将成员函数的参数设置为可选。当没有提供参数时,最好使用成员变量作为默认值。

考虑以下示例:

class Object {
    ...
    void MoveTo(double speed, Point position);

protected:
    Point initPos;
    Point currPos;
};
登录后复制

代码尝试将成员变量 initPos 指定为MoveTo 函数中位置参数的默认值:

void Object::MoveTo(double speed, Point position = initPos) {
    currPos = postion;
}
登录后复制

但是,这种方法会导致编译错误:

error: invalid use of non-static data member 'Object::initPos'
登录后复制

问题是成员函数的默认参数表达式必须仅依赖于类或全局范围元素。此外,必须在头文件的方法声明中定义默认参数。

要解决此问题,可以创建 MoveTo 方法的两个重载:

void Object::MoveTo(double speed) {
    MoveTo(speed, initPos);
}

void Object::MoveTo(double speed, Point position) {
    // Implementation here.
}
登录后复制

MoveTo 方法使用单个参数调用带有两个参数的 MoveTo 方法,并传递 initPos 值作为默认值。

Object object;
object.MoveTo(10.0); // Calls MoveTo(10.0, initPos)
登录后复制

此方法通过允许仅定义一次 MoveTo 的实现来遵守 DRY 原则。

以上是如何在 C 成员函数中使用成员变量作为默认参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板