模板类的大小相等 我为C++编写了一个简单的树类的实现。在某个时刻,我问自己这个类使用了多少内存。所以我试着: cout << sizeof( tree<int> ) << " " << sizeof( tree<float> ) << " " << sizeof( tree<double> );

模板类的大小相等 我为C++编写了一个简单的树类的实现。在某个时刻,我问自己这个类使用了多少内存。所以我试着: cout << sizeof( tree<int> ) << " " << sizeof( tree<float> ) << " " << sizeof( tree<double> );,c++,templates,tree,sizeof,C++,Templates,Tree,Sizeof,为什么总是有相同的大小,即使我指定了不同的类型 这是我的班级: template <typename T> class tree { private: T val; tree< T > *left; tree< T > *right; public: tree(); tree( T val ); ~tree(); }; 您正在64位系统上编译,其中指针的长度为8字节。它们还需要8字节对齐,以避免性能损失,因此编译器

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

这是我的班级:

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

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

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

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

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