如何优化类引用成员占用的空间?

时间:2014-04-01 03:25:38

标签: c++ optimization reference

template<typename T>
struct UninitializedField
{
    T& X;
    inline UninitializedField( ) : X( *( T* )&DATA )
    {
    }
protected:
    char DATA[ sizeof( T ) ];
};

int main( )
{
    UninitializedField<List<int>> LetsTest;
    printf( "%u, %u\n", sizeof( LetsTest ), sizeof( List<int> ) );
}

我正在尝试编写一个包装对象的类,而不是自动初始化\构造。 但是当我执行我的程序时,输出是:

8, 4

有没有办法优化取消引用以进入X中的对象及其占用的空间?

1 个答案:

答案 0 :(得分:0)

template<typename T>
struct UninitializedField {
    __inline UninitializedField( const T &t ) {
        *( ( T* )this ) = t;
    }
    __inline UninitializedField( bool Construct = false, bool Zero = true ) {
        if ( Zero )
            memset( this, 0, sizeof( *this ) );
        if ( Construct )
            *( ( T* )this ) = T( );
    }
    __inline T *operator->( ) {
        return ( T* )this;
    }
    __inline T &operator*( ) {
        return *( ( T* )this );
    }
protected:
    char DATA[ sizeof( T ) ];
};

没有占用空间,并且在编译器优化时没有调用函数。