我没有得到为什么带有成员函数的类的大小是1个字节.在下面的例子中,成员函数是4个字节.
class Test
{
public:
Test11()
{
int m = 0;
};
};
int main()
{
Test t1;
int J = sizeof(t1);
int K = sizeof(t1.Test11());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里J变为1字节,K变为4字节.如果K = 4,那么为什么类的大小不是4个字节而是显示1个字节
Cra*_*rks 13
函数本身实际上并未存储在类中.
只有类的数据成员(可能还有它的vtable指针,如果有的话)会影响它的大小.函数本身存在于可执行代码区域中,同一类型的所有实例都使用该函数的一个定义.每次创建类的新实例时,编译器实际上都不会复制出函数体的全部内容.
另外,sizeof(t1.Test11())并不意味着"函数Test :: Test11的可执行代码的大小以字节为单位".它表示"Test :: Test11返回的类型的大小".