C ++ - ClassA * ClassA =新ClassA和ClassA * classA =新A类()之间有什么区别

时间:2010-08-04 17:46:06

标签: c++

  

可能重复:
  Do the parentheses after the type name make a difference with new?

大家好,

/ *抱歉我原来的帖子,我更正了我的问题如下* /

假设ClassA是一个定义良好的C ++类,并且具有默认构造函数等。 以下两种情况有什么区别:

ClassA* pClassA = new ClassA;    // case I
classA* pClassA = new ClassA();  // case II

如果可能的话,使用案例I被认为是一种很好的做法。

这是什么原因?

因为如果我只调用ClassA的默认构造函数,而在案例II中,将构造一个ClassA的临时实例。

这是对的吗?

谢谢

1 个答案:

答案 0 :(得分:1)

对于您指定的定义的构造函数的情况,没有区别。您可以通过运行此程序来测试它:

#include <iostream>

struct A {
    A() { std::cout << "A()" << std::endl; }
    A(const A&) { std::cout << "A(const A&)" << std::endl; }
    A& operator=(const A&) { std::cout << "operator=(const A&)" << std::endl; }
    ~A() { std::cout << "~A()" << std::endl; }
};

int main() {
    A *p1 = new A;
    A *p2 = new A();
}
相关问题