我想知道我正在构建的这种抽象数据类型是否正确构建。
我的构造函数:
IntSet();
IntSet(int a, int = -1, int = -1, int = -1, int = -1);
在main中创建的IntSet:
IntSet A();
IntSet B;
现在A在5值构造函数中构造,B在空构造函数中构造。这是正确的,还是应该在空构造函数中构造A?
谢谢!
答案 0 :(得分:1)
IntSet A();
这一行声明一个函数,它不带参数并返回IntSet
类型。它没有定义对象。它也被称为most vexing parse。
IntSet B;
这一行通过调用默认构造函数(带0参数的构造函数)来定义对象B
。
答案 1 :(得分:1)
现在,B是默认构造的。
A根本不是对象的定义。它是一个名为A
的函数的声明,它不带任何参数并返回IntSet
。谷歌搜索“最令人烦恼的解析”将提供更多的解释和讨论。