类里面的函数不占空间么 ?解决思路

类里面的函数不占空间么 ?
我定义一个类

class A
{
int i ;
public:
A(int ii ) : i(ii){}
void f(){cout << "A" <<endl;}//1
};


然后 A a(0);
cout << sizeof a ;
打印出来是4 ,即int i 所占的空间,函数f 不占空间么,

------解决方案--------------------
占空间. 但是不在sizeof里面.
就像静态成员一样
------解决方案--------------------
函数的代码放在代码段。
------解决方案--------------------
函数最早出现的本质是什么?不就是一段共同的代码独立出来么,每个需要用到这段代码的地方只需要一个调用就可以了,而不用重复出现。
既然如此,为什么这么问呢?以为多一个对象就多一份代码出来么?
------解决方案--------------------
类里面占空间的是成员变量,如果有虚函数的话,编译器会插入虚表指针,也占空间,如果由纯虚基类的话,看编译器的实现,可能会比+基类大,也可能会小。此外还要考虑内存对齐所浪费的空间。
ps:如果类为空,或由纯虚空基类派生出的空类的话,编译器可能会做调整,使其大小不是0.