首页 > 试题广场 >

有如下类定义,请问sizeof(A)的值为?

[单选题]
有如下类定义:
class A {
  public:
    int fun1();
    virtual void fun2();

  private:
    int _a;
};

在32位机器上,请问sizeof(A)的值为:
  • 12
  • 8
  • 4
  • 1
推荐
答案:选B
类的大小只与成员变量(非static数据成员变量)和虚函数指针有关,还要考虑到对齐. 
所以类A的大小:4个字节(int _a)+4个字节(指向虚函数的指针)= 8个字节

编辑于 2015-02-04 20:08:02 回复(7)
这里,普通函数不算;
只计算非static数据成员,这里为4;
还有就是虚函数,这里也为4;需要指出,这里的4是因为存在指向虚函数表的指针(也就是,若存在多个虚函数,也为4)
所以,总的为8
发表于 2017-05-19 19:29:15 回复(0)
普通成员函数不算到字节里面,虚函数有一个指向虚函数列表的指针,无论有多少个虚函数都是占用一个字节的大小。
发表于 2015-06-17 14:30:06 回复(7)
c++的知识点吧,标个c干嘛
发表于 2022-03-27 15:49:48 回复(0)

类的大小只和变量(非static)和虚函数有关

编辑于 2021-03-27 18:38:39 回复(0)
类的大小只与成员变量(非static数据成员变量)和虚函数指针有关,还要考虑到对齐. 
所以类A的大小:4个字节(int _a)+4个字节(指向虚函数的指针)= 8个字节
发表于 2016-10-16 13:38:21 回复(0)
SMn头像 SMn
sizeof(int) + sizeof(vptr) = 4+4
发表于 2017-08-17 22:53:08 回复(0)
jzx头像 jzx
普通函数不算,只计算非static和虚函数,注意:多个虚函数时和只有一个虚函数是一样的
发表于 2021-02-28 17:56:23 回复(0)
指向虚函数的指针占4个字节
发表于 2018-07-14 13:50:54 回复(0)
类持有的是指向虚函数表的指针,无论有几个虚函数,都存储在一个虚函数表里
发表于 2016-04-28 10:55:25 回复(0)
类的大小只与成员变量(非static数据成员变量)和虚函数指针有关
发表于 2022-03-15 15:21:09 回复(0)
存在虚函数,多了一个指向虚函数表的指针,多个虚函数也只存在也只加4字节
编辑于 2019-09-09 02:41:28 回复(0)
4+4
发表于 2019-02-22 08:51:02 回复(0)
fun()不占用,记住sizeof
发表于 2017-10-20 11:00:32 回复(0)
1.类的大小只与成员变量(非static数据成员变量)和虚函数指针有关,还要考虑到对齐.,如4字节对齐,1字节对齐
2.普通成员函数不算到字节里面
所以sizeof(A) = 4(int _a) + 4(virtual)
发表于 2017-10-15 16:47:59 回复(0)
private没人解释一下吗
发表于 2017-04-25 14:58:21 回复(1)
普通成员函数不算到字节里面,虚函数有一个指向虚函数列表的指针,无论有多少个虚函数都是占用一个字节的大小。
发表于 2017-04-18 07:58:37 回复(1)
啊啊啊啊.....有个虚指针啊!
发表于 2017-03-23 20:29:47 回复(0)
虚函数有一个指向虚函数表的指针
发表于 2017-03-08 19:23:39 回复(0)
我只想说,普通函数你又调皮了←_←
发表于 2016-02-24 03:04:54 回复(0)