c++ 函数调用前的类型声明?
Posted
技术标签:
【中文标题】c++ 函数调用前的类型声明?【英文标题】:c++ Type declaration before function invocation? 【发布时间】:2018-03-14 21:57:50 【问题描述】:我正在查看 v8 javascript 引擎 (here's the github link) 的源代码,在 parsing.cc 的第 33 行,函数中有这样的语句:
Parser parser(info);
我只习惯在赋值前看到这样的类型声明,比如:
Parser myparser = Parser(...);
那么第一个例子是做什么的呢?为什么不直接调用 parser(info)
而不使用类型声明?
提前谢谢你。
【问题讨论】:
这不是调用Parser
构造函数吗?我的 C++ 生锈了,但这看起来就像一个变量初始化。
这和int n(5);
没有区别。
相关/欺骗:***.com/questions/4470553/…
我认为它不是重复的。我的问题要求人们帮助识别句法形式,而引用的问题要求比较两种形式。
【参考方案1】:
线
Parser parser(info);
通过调用以info
作为参数的构造函数来构造一个Parser
对象。
这种构造对象的方法叫做direct initialization。
您也可以使用表格
Parser parser = Parser(info);
构造对象。这种构造对象的方法称为copy initialization。
【讨论】:
【参考方案2】:您正在堆栈上构造 Parser 类型的对象。 (或者正如 cmets 所说,取决于块范围,这可能是一个全局变量,无法从可用信息中辨别出来,但很可能是堆栈:) Object creation on the stack/heap?
【讨论】:
你怎么知道它在堆栈上? @juanchopanza 如果它不使用“new”并进入堆,那么它将是堆栈。 不,也可以是静态存储。 那不需要静态限定符吗? 不。谁说过块作用域?以上是关于c++ 函数调用前的类型声明?的主要内容,如果未能解决你的问题,请参考以下文章