C++ sizeof(类名问题)
2个回答
展开全部
首先一点,
typedef 是用来定义新类型的。 所以
typedef char m_c20[20];
这一句并不是定义了一个成员变量m_c20,而是一个类型。 所以这句在本程序中没有实际意义。
后续你可以m_c20 m_cc;这样定义变量,但这里并没有。
所以 sizeof (A)就是 m_b, m_d这两个占的字节数。
注意 m_a由于是static的,所以不在sizeof计算之中。
m_b是4字节。 m_d是8字节,于是8字节对齐,最终sizeof为16.
为验证这一点,你可以把A改成这样几种形式:
1
class A
{
int a;
double b;
};
输出16
2
class A
{
int a;
double b;
static int m;
};
输出16
3
class A
{
int a;
double b;
int m;
};
输出24
4
class A
{
int a;
int m;
double b;
};
输出16
更多追问追答
追问
无懈可击
今天详细看起来,有一点疑问,我是32位的编译环境,这样了话寻址就是4,然后我测试了你24字节那个居然也输出24
2017-08-20
展开全部
你把class换成struct
另外删除那个 typedef
再运行程序看看
另外删除那个 typedef
再运行程序看看
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询