用创建对象调用构造函数

时间:2019-03-03 20:18:02

标签: c++ oop constructor initializer

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)如何调用构造函数?

2 个答案:

答案 0 :(得分:3)

这两个调用是相同的。

唯一的区别是,第二秒将创建的对象保存在局部变量p

答案 1 :(得分:0)

在C ++中,类型名后跟(可能为空)带括号的列表是一个prvalue表达式,通常会导致创建该类型的临时对象,并且该列表由构造函数的参数组成。

例外情况是语法歧义see here

P p = P(5,4);比较在P(5,4);中,您仍然拥有相同的右侧,但是您只是创建并销毁了该对象,而不是将其与名称p关联。