0

我正在研究书中的一个示例,他们在类定义中为我们提供了原型(我认为它被调用了!),然后他们希望我们像在类的 cpp 文件中那样定义方法。我在理解 mutator 方法时遇到了麻烦,特别是在这种情况下使用运算符。当你让他们成为班级的“朋友”时更有意义,但在这种情况下他们没有。我似乎无法弄清楚它会如何表现。任何帮助都会很棒!

类类型为“邮件”:

Mail operator=(const Mail& rValue);
Mail operator+(int ounces);

它们的重点是稍后在我们创建对象 mailItem1 时,我们希望将其添加到它的属性之一(重量)

mailItem1 = mailItem1 + ADDITIONAL_WEIGHT;

我知道您不一定需要查看所有内容,但这是整个班级。

class Mail
{
    // Public Interface
public:
    // Class Constructor(s)
    Mail();
    Mail(const char* type, double perOunceCost, int weight);
    Mail(const Mail& other);

    // Class Destructor
    ~Mail()
    { }  // Nothing to do, included for completeness

    // Mutator Methods
    Mail operator=(const Mail& rValue);
    Mail operator+(int ounces);

    // Observer Methods
    double getCost() const;
    friend ostream& operator<<(ostream& stream, const Mail letter);

private:
    // Class "static, const" Constant Values
    static const int TYPE_SIZE = 30;
    static const char FIRST_CLASS[];
    static const double FIXED_COST;
    static const int DEFAULT_WEIGHT = 1;

    // Variable Declarations
    char type[TYPE_SIZE];
    int weight;
    double perOunceCost;
};

我很困惑它是如何工作的,并希望得到一些帮助。谢谢!

4

1 回答 1

0

你应该看看 I/O 操纵器是如何工作的。他们做你想做的事。

这里有一个解释:流操纵器是如何工作的?

您正在尝试使用标准库对 << 执行的 + 运算符执行相同的操作。

看一下std::endl(无参数)、std::setw(有参数)的定义。

我很想知道你在用什么书。这是一个非常糟糕的例子,展示了非常糟糕的类设计。

于 2014-05-27T23:02:36.403 回答