可能重复:
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的临时实例。
这是对的吗?
谢谢
答案 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();
}