0

抱歉,格式很糟糕,但我只是想确定以下内容是否会被视为访问器。

所以我的类定义看起来像这样......

class work {
        public:
           void getInput(); //Mutator
           void output(); //Accessor?
  //...

所以这里的功能..

void work::output()
{
  dayofweek = day + getMonthvalue(month, year) + ....;
  final = dayofweek % 7;

  if(final == 0)
    cout << "The day of the date is Sunday\n";

  else if(final == 1)
    cout << "The day of the date is Monday\n";

  else if(final == 2)
    cout << "The day of the date is Tuesday\n";

  /*.
    .
    .*/

  else {
    cout << "The day of the day is Saturday\n";
  }
}
4

2 回答 2

2

您所展示的output内容通常会写成inserter

class work { 
    // ...

    friend std::ostream &operator<<(std::ostream &os, work const &w) { 
        static char const *names[] = { 
          "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
        };

        return os << names[getDayOfWeek(w)];
    }
};

需要明确一点:aninserter之所以得名,是因为它将某种类型的项目插入流中。镜像(从流中获取某种类型的项目)是一个extractor.

如果你真的坚持要为代码取一个正确的名称,那么我自己的立场是它是一个mistake(强制输出cout失去灵活性,使用if梯子会使代码变得丑陋和笨拙)。

于 2014-12-11T02:52:26.553 回答
1

一些术语

  • mutator 更改类中的数据。
  • 访问器检索它。

不,不是真的。访问器是从访问派生的

于 2014-12-11T02:43:14.420 回答