我正在查看v8 javascript引擎(here's the github link)的源代码,并在parsing.cc的第33行,在函数中有这个语句:
Parser parser(info);
我只习惯在作业之前看到这样的类型声明,例如:
Parser myparser = Parser(...);
那么第一个例子是做什么的?为什么不在没有类型声明的情况下调用parser(info)
?
提前谢谢。
答案 0 :(得分:4)
该行
Parser parser(info);
通过调用以Parser
为参数的构造函数构造info
对象。
这种构造对象的方法称为direct initialization。
您也可以使用表格
Parser parser = Parser(info);
构造对象。这种构造对象的方法称为copy initialization。
答案 1 :(得分:0)
您正在堆栈上构建Parser类型的对象。 (或者评论说取决于块范围,这可能是一个全局变量,无法从可用信息中辨别出来,但很可能是堆栈:) Object creation on the stack/heap?