C++ C++;创建没有参数的对象的语法
这个问题可能有点奇怪,我在网上找不到任何关于这个问题的信息。这主要是关于C++语法的。 假设我有以下结构C++ C++;创建没有参数的对象的语法,c++,syntax,instance,C++,Syntax,Instance,这个问题可能有点奇怪,我在网上找不到任何关于这个问题的信息。这主要是关于C++语法的。 假设我有以下结构 struct foo { void someMethod(); }; 现在我们可以创建这个结构的一个实例并使用它的方法 foo().someMethod(); // Works fine - Create instance on stack and called its method foo* p = new foo(); // Works fine - p points t
struct foo
{
void someMethod();
};
现在我们可以创建这个结构的一个实例并使用它的方法
foo().someMethod(); // Works fine - Create instance on stack and called its method
foo* p = new foo(); // Works fine - p points to object on the heap
现在我的问题是——我在一些地方看到了以下情况
foo* p = new foo; //Not new foo(); // Its missing `()` at the end;
那么,对于不需要构造函数中的参数的对象,用以下两种方法声明foo有什么区别呢
foo(); and foo;
如果两者没有区别,为什么我们不能这样做
foo.someMethod();
这只是一个我很好奇的问题。有一些细微的区别,请参见可能重复的You can't do
foo.someMethod()
因为foo
是一个类的名称,而
操作符需要在左边有一个对象(即该类的实例)。但是,new
表达式需要一个类的名称,可以选择初始值设定项或构造参数。new foo()
的含义在C++98和C++03之间发生了变化,因此我非常小心在自己的代码中使用它;如果零初始化很重要,那么我添加一个构造函数。