我读了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)和
- Token (char, double val)
谢谢。
你没有。您可以使用以下命令:
Token(char ch, double val = 0)
:kind(ch), value(val) { }
基本上,这个(和Bjarne的)代码所做的是允许您从以下两种方式构建Token
:
- a
char
;或 - a
char
和adouble
.
作者这样做可能是为了同时展示构造函数重载的概念,您可以使用下面的
Token(char ch, double val = 0) : kind(ch), value(val) {}
这样,val的默认值是0,如果你想传递任何其他值,0将被该值覆盖