c++ - 为什么 sizeof 运算符不计算函数的大小

标签 c++ sizeof

class Test
{
   void func(){int i;}
};

int main()
{
   cout<<sizeof(Test)<<endl; //gives 1
}

为什么sizeof(Test)不考虑函数的大小。函数真正存储在哪里?在谷歌中找不到任何解释这一点的链接。

编辑:如果提供除 wiki 之外关于类内部分的任何好的链接,那将是很好的。

最佳答案

如果它确实考虑了函数的大小,sizeof 将无法达到预期目的。例如,您可以使用 sizeof(Test) 来了解要分配多少内存来保存对象的实例。

但是该实例不包含该函数的拷贝,因为每个实例的函数都是相同的。精确存储函数的一个拷贝以备不时之需不受现有对象数量的影响。

关于c++ - 为什么 sizeof 运算符不计算函数的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27396485/

相关文章:

c++ - 如何在for循环中包含两个索引值测试条件?

c++ - 将二维字符串数组传递给 C++ 中的函数

c - 你怎么知道用 malloc() 分配多少空间?

c++ - 来自静态成员函数的 sizeof C++ 类

c++ - new 运算符返回什么?

c++ - 如何在makefile中添加.c、.cc和.so文件来创建另一个.so?

c++ - 如何在 Windows 中使用相同的套接字获取 ipv4 和 ipv6 数据包,它在 linux 上工作

c - 如何在 C 编译时打印 sizeof() 的结果?

c++ - 为什么 std::string 上的 Sizeof 运算符会产生意外结果?

c++ - sizeof(* struct pointer) 是否给你结构的值