我的 C++ 默认构造函数不执行

时间:2021-03-14 09:44:58

标签: c++

我有一个包含两个类对象的主例程。 一类没有参数。 另一个类有 1 个参数。 没有参数的类不执行。 为什么不呢?

主.cpp: ...

#include "Dummy1.h"
#include "Dummy2.h"

int main()
{
  int x = 0;
  Dummy1 First();       //This  doesn't execute.
  Dummy2 Second(x); //This does.

  return 0;
}

...

Dummy1.cpp: ...

#include "Dummy1.h"
#include <iostream>
using namespace std;

//This one has no parameters.
Dummy1::Dummy1()
{
  cout << "Dummy1\n" ;
}

Dummy1::~Dummy1()
{
}

...

Dummy2.cpp: ...

#include "Dummy2.h"
#include <iostream>
using namespace std;

//This one has a parameter that is unused.
Dummy2::Dummy2(int a)
{
  cout << "Dummy2\n";
}

Dummy2::~Dummy2()
{
}

...

输出: ...

Dummy2

...

1 个答案:

答案 0 :(得分:3)

您遇到了最烦人的解析。简而言之,C++ 编译器会假设你的代码是一个函数声明,如果这段代码可以被视为一个函数声明。要调用默认构造函数,需要去掉括号,或者写在花括号中。

所以在代码中

SomeClass a();// func declaration
SomeClass b;  // default constuctor
SomeClass c{};// initializer list consturctor or default constructor