用括号初始化的对象的 C++ 类型

问题描述 投票:0回答:2

我创建了一个名为 Matrix 的类。该类有两个构造函数,一个默认构造函数和一个复制构造函数。此外,还有一个称为决定因素的公共方法。在主要内容中我写道:

Matrix a(); 
a.Determinant()

Matrix a(); 
a->Determinant()

但它们都无效。 我打印了 a 的类型,但我不明白这是什么类型?

c++ types initialization
2个回答
0
投票

这是 C++ 最令人烦恼的解析。线路:

Matrix a(); 

被解释为不接受参数并返回

Matrix
的函数声明。创建默认构造对象的正确方法很简单

Matrix a;

0
投票

线路:

Matrix a();

声明一个返回 Matrix 的函数,而不是具有默认构造的对象。省略括号。

请参阅:https://en.wikipedia.org/wiki/Most_veshing_parse,了解更困难的情况的讨论。 (这必须是重复的,但快速搜索没有找到。我一会儿会仔细看看。)

© www.soinside.com 2019 - 2024. All rights reserved.