我有一个包含两个类对象的主例程。 一类没有参数。 另一个类有 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
...
答案 0 :(得分:3)
您遇到了最烦人的解析。简而言之,C++ 编译器会假设你的代码是一个函数声明,如果这段代码可以被视为一个函数声明。要调用默认构造函数,需要去掉括号,或者写在花括号中。
所以在代码中
SomeClass a();// func declaration
SomeClass b; // default constuctor
SomeClass c{};// initializer list consturctor or default constructor