相关疑难解决方法(0)

为什么没有成员变量的C++类占用空间?

我发现MSVC和GCC编译器每个类实例至少分配一个字节,即使该类是没有成员变量的谓词(或只有静态成员变量).以下代码说明了这一点.

#include <iostream>

class A
{
public:
   bool operator()(int x) const
   {
      return x>0;
   }
};

class B
{
public:
   static int v;
   static bool check(int x)
   {
      return x>0;
   }
};

int B::v = 0;

void test()
{
   A a;
   B b;
   std::cout << "sizeof(A)=" << sizeof(A) << "\n"
             << "sizeof(a)=" << sizeof(a) << "\n"
             << "sizeof(B)=" << sizeof(B) << "\n"
             << "sizeof(b)=" << sizeof(b) << "\n";
}

int main()
{
   test();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

sizeof(A)=1
sizeof(a)=1
sizeof(B)=1 …
Run Code Online (Sandbox Code Playgroud)

c++ class predicate sizeof

52
推荐指数
3
解决办法
6869
查看次数

标签 统计

c++ ×1

class ×1

predicate ×1

sizeof ×1