可能重复:
类型名称后的括号是否与new有所不同?
大家好,
class Car
{
public:
Car() : m_iPrice(0) {}
Car(int iPrice) : m_iPrice(iPrice) {}
private:
int m_iPrice;
};
int _tmain(int argc, _TCHAR* argv[])
{
Car car1; // Line 1
Car car2(); // Line 2, this statement declares a function instead.
Car* pCar = new Car; // Line 3
Car* pCar2 = new Car(); // Line 4
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
当我们定义Car的对象时,我们应该使用第1行而不是第2行.当我们创建一个对象时,第3行和第4行都可以通过VC8.0的编译器.但是,3号线或4号线更好的方法是什么?或者,第3行等于第4行.
谢谢
#include<iostream>
class name
{
public:
int a;
name():a(0){};
};
void add(name * pname)
{
pname = NULL;
}
int main()
{
name varName();
name * pName = new name();
add(pName);
add(&varName);//error C2664: 'add' : cannot convert parameter 1 from 'name __cdecl *)(void)' to 'name *'
}
Run Code Online (Sandbox Code Playgroud)