c++ - 在模板上使用 ()-运算符

标签 c++ templates

我无法通过谷歌搜索找到答案,因为我不知道实际要寻找什么。所以我偶然发现了这个:

template<typename T>
class SkipList {
    public:
        SkipList() : max_level_(16) { 
            head = new Node(T(), max_level_);
    ...
}

而且我真的不知道T() 是什么意思。我熟悉模板的概念(至少我对此有基本的了解),但我从未见过在模板上使用 ()-Operator。那么它究竟在做什么?

最佳答案

所做的是创建该类型的默认对象。根据对象的不同,它意味着不同的东西,但归根结底,当你想要某样东西,但又不是特别关心它是什么时,你可以使用默认对象来获得具有通用值的对象。对于 intdouble 它应该是 0,但是对于像 string 这样更复杂的类型,它会变成空字符串或者所有属性都被设置到 0。这是在类中有默认构造函数的部分原因。

std::cout << int() << " " << std::string() << " " << double();

输出:

0  0 

关于c++ - 在模板上使用 ()-运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49588838/

相关文章:

c++ - 如何将击键发送到窗口?

c++ - 为什么 Google Mocks 发现这个函数调用不明确?

python - Cython:反教程行为

c++ - 具有模板化返回值解决方法的虚拟模板函数

c++ - C++ 映射表中结构键的比较运算符

C++货币转换器尾随零

C++ fstream 只保存字符串的第一个字符

c++ - 字符串文字不允许作为非类型模板参数

c++ - 为什么重载运算符时会出现编译错误而不是替换失败?

c++ - 为什么更喜欢基于模板的静态断言而不是基于 typedef 的静态断言?