用括号初始化的对象的C++类型[重复]

h6my8fg2  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(79)

此问题在此处已有答案

Default constructor with empty brackets(9个答案)
4天前关闭。
我创建了一个名为Matrix的类。这个类有两个构造函数,一个默认构造函数和一个复制构造函数。此外,还有一个名为Determinant的公共方法。在main中我写:

Matrix a(); 
a.Determinant()

字符串

Matrix a(); 
a->Determinant()


但是没有一个是有效的。我打印了a的类型,但是我不知道这是什么类型?

hgqdbh6s

hgqdbh6s1#

这是C++中最令人烦恼的解析。

Matrix a();

字符串
被解释为不接受任何参数并返回Matrix的函数的声明。

Matrix a;

vngu2lb8

vngu2lb82#

台词:

Matrix a();

字符串
声明一个返回矩阵的函数,而不是一个具有默认构造的对象。省略括号。
请参阅:https://en.wikipedia.org/wiki/Most_vexing_parse用于讨论更困难的情况。(这一定是重复的,但快速搜索没有找到。我将在一分钟内仔细查找。)

相关问题