我创建了一个名为 Matrix 的类。该类有两个构造函数,一个默认构造函数和一个复制构造函数。此外,还有一个称为决定因素的公共方法。在主要内容中我写道:
Matrix a();
a.Determinant()
或
Matrix a();
a->Determinant()
但它们都无效。 我打印了 a 的类型,但我不明白这是什么类型?
这是 C++ 最令人烦恼的解析。线路:
Matrix a();
被解释为不接受参数并返回
Matrix
的函数声明。创建默认构造对象的正确方法很简单
Matrix a;
线路:
Matrix a();
声明一个返回 Matrix 的函数,而不是具有默认构造的对象。省略括号。
请参阅:https://en.wikipedia.org/wiki/Most_veshing_parse,了解更困难的情况的讨论。 (这必须是重复的,但快速搜索没有找到。我一会儿会仔细看看。)