C++ 创建一个类的实例?

标签 c++ class constructor instance default-parameters

<分区>

Possible Duplicate:
Default constructor with empty brackets
Instantiate class with or without parentheses?

程序:

class Foo
{
   public:
      Foo ( int bar = 1 )
      {
         cout << "bar=" << bar;
      }
};

int main() {

   cout << "0 - ";
   Foo foo_0 ( 0 ) ;
   cout << '\n';

   cout << "1 - ";
   Foo foo_1 ();
   cout << '\n';

   cout << "2 - ";
   Foo foo_4;
   cout << '\n';

   return 0;

}

输出:

0 - bar=0
1 - 
2 - bar=1

问题:为什么示例 #1 不起作用,而示例 #0 和 #2 可以?

最佳答案

Foo foo_1 ();

是一个函数声明,没有创建对象。这是一个名为 foo_1 的函数,它不接受任何参数并返回一个 Foo 对象。

构造对象的正确方法是

Foo foo1;

这个概念叫做C++的vexing parse .一个简短的描述是,任何可以被视为声明的东西都是。

关于C++ 创建一个类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12348204/

相关文章:

c++ - 异步事件 : already defined linker error [Windows Update API]

c++ - 我如何取消声明 DECLARE_HANDLE?

类内的 Python 回调

c++ - 抽象类中的虚拟类

Android - 节奏调整?

c++ - Nvidia Nsight Eclipse 版使用 C/C++ 远程启动配置进行远程调试

javascript - this.constructor.SomeVarible 与 OOP JS 中的 this.SomeVarible

c# - 如何为我编写的类编写数组样式的初始化程序?

C++仿函数,一种有效的方法?

c++ - 为什么这里没有省略复制构造函数?