我无法通过谷歌搜索找到答案,因为我不知道实际要寻找什么。所以我偶然发现了这个:
template<typename T>
class SkipList {
public:
SkipList() : max_level_(16) {
head = new Node(T(), max_level_);
...
}
而且我真的不知道T()
是什么意思。我熟悉模板的概念(至少我对此有基本的了解),但我从未见过在模板上使用 ()-Operator。那么它究竟在做什么?
最佳答案
所做的是创建该类型的默认对象。根据对象的不同,它意味着不同的东西,但归根结底,当你想要某样东西,但又不是特别关心它是什么时,你可以使用默认对象来获得具有通用值的对象。对于 int
和 double
它应该是 0,但是对于像 string
这样更复杂的类型,它会变成空字符串或者所有属性都被设置到 0。这是在类中有默认构造函数的部分原因。
std::cout << int() << " " << std::string() << " " << double();
输出:
0 0
关于c++ - 在模板上使用 ()-运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49588838/