首页 > 试题广场 >

假设有如下这样一个类,那么请问sizeof(X)的值为多少?

[单选题]
假设有如下这样一个类:
class X
{
    public:
        void xoo(){}
};

请问sizeof(X)的值为多少?

  • 0
  • 1
  • 2
  • 4
  • 8
C++标准规定类的大小不为0,空类的大小为1,当类不包含虚函数和非静态数据成员时,其对象大小也为1。

对有虚函数的类来说,必须为它的对象提供运行时类型信息(RTTI,Run-Time Type Information)和关于虚函数表的信息,常见的做法是在对象中放置一个指向虚函数表的指针,此外,为了支持RTTI,许多编译器都把该类型信息放在虚函数表中。但是,是否必须采用这种实现方法,C++标准没有规定,主流编译器均采用的一种方案。 

虚函数、成员函数[包括静态与非静态]、和静态数据成员都是不占用对象的存储空间的

对象大小  =  虚函数指针  +   所有非静态数据成员大小   +   因对齐而多占的字节

例子:
#include <iostream>   using namespace std; class A { }; class B {     char ch;     void func() {} }; class C {     char ch1;    //占用1字节       char ch2;    //占用1字节       virtual void func() {} }; class D {     int in;     virtual void func() {} }; int main() {     A a;     B b;     C c;     D d;     cout << sizeof(a) << endl;//result=1       cout << sizeof(b) << endl;//result=1       cout << sizeof(c) << endl;//result=8          cout << sizeof(d) << endl;//result=8      }

编辑于 2018-05-14 14:42:47 回复(4)
类的大小与它的构造函数、析构函数以及其他成员函数无关,只与它的数据成员相关。
当一个类中包含虚函数时,会有一个指向其虚函数表的指针vptr,系统为类指针分配大小为4个字节(即使有多个虚函数)。
发表于 2018-05-09 17:24:16 回复(0)
没虚函数大小为1,有虚函数大小为4
发表于 2018-09-05 07:18:12 回复(1)
B
函数为虚函数时大小为4
发表于 2017-04-03 13:39:48 回复(2)
当类中没有任何成员变量,也没有虚函数的时候,该类的大小是1
发表于 2018-03-21 22:04:56 回复(0)
与类大小有关的因素:普通成员变量,虚函数,继承(单一继承,多重继承,重复继承,虚拟继承)     

与类大小无关的因素:静态成员变量,静态成员函数及普通成员函数
发表于 2022-07-06 18:35:01 回复(0)
类内普通函数此时不占内存,所以此时只是求空类所占字符大小,结果为1
发表于 2018-06-02 22:49:20 回复(0)
sizeof(类)=1,不管有没有构造函数或者其他
发表于 2017-08-21 17:18:00 回复(3)
不咋懂,为啥是1和2
编辑于 2021-12-29 12:59:35 回复(0)

空类大小为1,类内有静态或非静态方法,构造函数,静态属性,该类的大小仍为1,如果类内有虚函数,非静态属性则不再为1,虚函数需要指针指向

发表于 2019-04-05 13:18:55 回复(0)
http://www.cnblogs.com/BeyondTechnology/archive/2010/09/21/1832369.html
发表于 2017-09-12 01:43:01 回复(0)