首页 > 后端开发 > C++ > 正文

我可以在 C 方法中使用成员变量作为默认参数吗?

Mary-Kate Olsen
发布: 2024-11-14 14:37:01
原创
624 人浏览过

Can I Use Member Variables as Default Arguments in C   Methods?

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

简介

当创建带有多个参数的方法的类时,使用以下命令可能会很有帮助:有些参数是可选的。通过使用默认参数功能,您可以为参数设置默认值,当客户端代码未提供值时可以使用该默认值。

问题:使用非静态成员变量作为默认参数

在您的例子中,您尝试使用成员变量 (initPos) 作为 MoveTo 成员函数的默认参数。但是,编译器发出错误,指示非静态数据成员的使用无效。

问题分析

默认情况下,成员变量在方法的作用域中不可访问,因为它们被视为一部分对象的状态而不是方法的上下文。因此,默认情况下,成员函数中的参数只能依赖于类内或全局范围的元素。

解决方案:方法重载

要解决此问题,您需要诉诸方法重载。方法重载允许您创建具有不同签名的同一方法的多个版本。以下是如何在代码中实现它:

// Object.h
class Object
{
public:
    ...
    void MoveTo(double speed);
    void MoveTo(double speed, Point position);

protected:
    Point initPos; 
    Point currPos;

};
登录后复制
// Object.c
void Object::MoveTo(double speed)
{
    MoveTo(speed, initPos);
}

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

通过定义 MoveTo 方法的两个版本,您可以有效地提供默认参数,而无需直接依赖成员变量。 MoveTo(double) 方法使用 initPos 值作为第二个参数调用 MoveTo(double, Point) 方法,允许您保留所需的功能并避免编译器错误。

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

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