c++ - C++ 查询中的获取和设置函数

标签 c++

我的老师说在 C++ 中使用 get 和 set 函数,因为我们可以在运行时从中获取值。是真的吗? 构造函数不是用于此目的以在运行时设置值。

最佳答案

构造函数用于生成对象中的“默认”值。
但是,一旦创建,“getter”和“setter”只是允许您访问该对象的私有(private)成员的方法。它们之所以这样命名,是因为将它们的方法命名为 getValue() 以从对象中获取名为 value 的私有(private)变量,或将其命名为 setValue(int) 以设置它。

在这些方法中进行错误检查以及在构造函数中调用“setter”选择以节省代码或轻松创建多个构造函数通常也很方便。

这是一个例子:

class MyClass
{
private:
    int value;
public:
    MyClass(int);

    void setValue(int);
    int getValue();
};

MyClass::MyClass(int _value)
{
    setValue(_value); // pass to "setter"
}

void MyClass::setValue(int _value)
{
    if (_value > 0) // error-checking here
        value = _value;
    else
        value = 0;
}

int MyClass::getValue()
{
    return value;
}

关于c++ - C++ 查询中的获取和设置函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32850337/

相关文章:

c++ - 返回值的最快 C++ 方法

c++ - 为什么我不能使用嵌套在结构中的结构作为类型来在类模板中声明变量?

c++ - 为什么访问从堆上的对象返回的 c_str 得到垃圾值?

c++ - 介绍 C++ 和蒙特卡洛方法

c++ - 对象有不同的函数成员还是共享它们?

c++ - 我可以使用 C++/WinRT 编写一个 DLL 以供 Windows 桌面应用程序(不是 UWP)或作为 Unity 插件使用吗?

c++ - 有什么简单的方法可以确定弹出菜单何时被关闭?

c++ - 避免嵌入式目标上的虚函数

c++ - 将纹理应用于对象时 Opengl 颜色错误

c++ - QtConcurrent::run 可以与对象的智能指针一起使用吗?