我阅读了关于令牌初始化的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'
进行两次令牌感谢。
答案 0 :(得分:8)
你没有。您可以改用以下内容:
Token(char ch, double val = 0)
:kind(ch), value(val) { }
基本上,这个(和Bjarne的)代码允许你从以下任何一个构建Token
:
char
;或char
和一个double
。答案 1 :(得分:0)
作者可能这样做是为了同时显示构造函数重载的概念, 你可以改为使用以下
Token(char ch, double val = 0) : kind(ch), value(val) {}
这样,val的默认值为0,如果要传递任何其他值,则该值将被该值覆盖