【问题标题】:Accessors and Mutators C++访问器和修改器 C++
【发布时间】:2015-02-24 17:51:11
【问题描述】:

我目前正在尝试学习 C++ 并按照说明进行操作。我研究过变异器和访问器,但我需要一个简单的解释。

class Customer
{
public:
    Customer();
    ~Customer();

private:
    string m_name;
    int m_age;

};

上面的代码在头文件中。在说明中,它要求我为这两个数据设置一个公共访问器和突变器。我该怎么做?

它还提到在 mutator 中检查年龄不是负数。我知道如何实现代码,但我只是对放置它的位置感到困惑。我是否将验证放在此头文件中?或在.cpp 中?还是在 main 方法中?

我知道这听起来很傻,而且我确信这很简单,但我想尝试理解这一点。

【问题讨论】:

  • 考虑用谷歌搜索 - 例如。 en.wikipedia.org/wiki/Mutator_method#C.2B.2B_example
  • mutator 标签只有 75 个问题。 =( 太伤心了。本周所有带有 mutator 标签的问题都没有得到回答。mutator 标签是忽略标签。
  • 函数定义在标题中。实施(和验证)进入 cpp。您可以将验证放在主要部分,但如果您想在其他项目中重用该类,则必须重新实现验证。
  • 您想从编写成员函数开始。研究一下,你会很好的。
  • 它们只是普通的成员函数,像任何其他函数一样声明和定义。花哨的名称只是意味着一个修改成员变量,而另一个返回其值(或对其的引用)。验证是 mutator 函数定义的一部分。

标签: c++ accessor mutators


【解决方案1】:

请注意,这是基本的 C++。

Accessor - 用于检索受保护成员数据的成员函数。

Mutators - 用于编辑受保护成员数据的成员函数。

在你的情况下,

class Customer
{
public:
    Customer();
    ~Customer();
    string getName(); // Accessor for the m_name variable
    void editName(string in); // Mutator for the m_name variable

private:
    string m_name;
    int m_age;

};

在您的 .cpp 文件中:

string Customer::getName() {
    return m_name;
}

void Customer::editName(string in) {
    m_name = in;
}

【讨论】:

  • 我相信 setName 是比 editName 更常见的 mutator 名称。
  • +one 表示答案,-one 表示居高临下的开场白。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多