可能重复:
为什么使用空括号调用没有参数的构造函数是错误的?
$ cat cons.cpp
#include <iostream>
class Matrix {
private:
int m_count;
public:
Matrix() {
m_count = 1;
std::cout << "yahoo!" << std::endl;
}
};
int main() {
std::cout << "before" << std::endl;
Matrix m1(); // <----
std::cout << "after" << std::endl;
}
$ g++ cons.cpp
$ ./a.out
before
after
$
语法 Matrix m1();
是什么意思?
我以为它和 Matrix m1;
是一样的,显然我错了。
A b(A())
。Matrix m1()
只是一个常规函数声明。 - CB Bailey