练习题总结-字节对齐

若char是一字节,int是4字节,指针类型是4字节,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
class CTest
{
    public:
        CTest():m_chData(‘\0’),m_nData(0)
        {
        }
        virtual void mem_fun(){}
    private:
        char m_chData;
        int m_nData;
        static char s_chData;
};
char CTest::s_chData=’\0’;
问:
(1)若按4字节对齐sizeof(CTest)的值是 12
(2)若按1字节对齐sizeof(CTest)的值是 9
注意点:
1 先找有没有virtual 有的话就要建立虚函数表,+4
2 static的成员变量属于类域,不算入对象中      +0
3 神马成员都没有的类,或者只有成员函数        +1
4 对齐法则,对大家都没有问题

 *p2++ = *p1++;
++优先级高于*,而且是从右往走计算

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页