C ++初始化令牌

时间:2013-03-06 09:29:13

标签: c++

我阅读了关于令牌初始化的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) { }
};

为什么必须为char ch'

进行两次令牌
  • 令牌(char ch)和
  • 令牌(char ch,double val)

感谢。

2 个答案:

答案 0 :(得分:8)

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

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

基本上,这个(和Bjarne的)代码允许你从以下任何一个构建Token

  • a char;或
  • 一个char和一个double

答案 1 :(得分:0)

作者可能这样做是为了同时显示构造函数重载的概念, 你可以改为使用以下

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

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