class P{
public:
P(int x,int y) { cout << "constructor called" << endl;}
};
int main ()
{
P(5,4); // constructor called
P p(5,4); // constructor called
return 0;
}
以上两个构造函数调用之间有什么区别?
P(5,4)
如何调用构造函数?
答案 0 :(得分:3)
这两个调用是相同的。
唯一的区别是,第二秒将创建的对象保存在局部变量p
答案 1 :(得分:0)
在C ++中,类型名后跟(可能为空)带括号的列表是一个prvalue表达式,通常会导致创建该类型的临时对象,并且该列表由构造函数的参数组成。
例外情况是语法歧义see here。
与P p = P(5,4);
比较在P(5,4);
中,您仍然拥有相同的右侧,但是您只是创建并销毁了该对象,而不是将其与名称p
关联。