-1

我阅读了有关令牌初始化的 Bjarne C++ 书籍。

编码:

class Token {
public:
    char kind;        // what kind of token
    double value;     // for numbers: a value
    Token(char ch)    // make a Token from a char
        :kind(ch), value(0) { }
    Token(char ch, double val)     // make a Token from a char and a double
        :kind(ch), value(val) { }
};

为什么必须使 Token 两次'for char ch'

  • 令牌 (char ch) 和
  • 令牌 (char ch, double val)

谢谢。

4

2 回答 2

8

你没有。您可以改用以下内容:

Token(char ch, double val = 0)
    :kind(ch), value(val) { }

基本上,这个(和 Bjarne 的)代码的作用是允许您Token从以下任一构造:

  • 一个char; 或者
  • 一个char和一个double
于 2013-03-06T09:30:14.437 回答
0

作者这样做可能是为了同时展示构造函数重载的概念,您可以改用以下内容

Token(char ch, double val = 0) : kind(ch), value(val) {}

这样,val 的默认值为 0,如果您想传递任何其他值,则该值将覆盖零

于 2013-03-06T11:05:29.993 回答