模板的相等 sizeofs class

Equal sizeofs of a template class

出于培训目的,我用 C++ 编写了自己的(简单的)树实现 class。在某些时候,我问自己这个 class 使用了多少内存。所以我尝试了:

cout << sizeof( tree<int> ) << " " << sizeof( tree<float> ) << " " << sizeof( tree<double> );

输出为:

24 24 24

为什么总是有相同的大小,即使我指定了不同的类型?

这是我的 class:

template <typename T>
class tree
{
private:
   T val;
   tree< T > *left;
   tree< T > *right;

public:
    tree();
    tree( T val );
    ~tree();
};

您正在 64 位系统上编译,其中指针的长度为 8 个字节。它们还需要 8 字节对齐,以避免性能损失,因此编译器在 valleft 之间插入填充以确保对齐。