您的位置:首页 > 编程语言 > C语言/C++

C++类成员函数存储方式

2017-04-18 22:42 162 查看
*类的成员函数是不占类空间的。

当我们实例化一个对象的时候,因为这个对象是用类定义的,那么它理所当然拥有了这个类的数据和函数。但是,一般情况下,不同的对象,他们的的数据值不同,但是函数的代码都相同。所以,为了节约存储空间(想象一下我们如果定义了100个对象,那么用100段内存空间存储相同的代码,岂不是很浪费?),我们让成员函数的代码共享。

所以类的成员函数,对于类来讲。一方面是逻辑上的“属于”,一方面是物理上的“不依赖“。

我们把成员函数的代码存储在对象空间之外。换句话说,成员函数的代码,都不占据对象的存储空间。它会被存在其他地方。

一个类对象的空间=所有类成员变量的大小

如果这个对象的类有虚函数的话,还可能多一个指向虚表的指针

所有函数存放在独立于对象的存储空间内

对象调用函数时,对静态成员函数直接调用不存在问题,对成员函数需要把自己以this指针传给函数以指明以哪个对象调用

所以用未初始化的指针调用静态成员函数、或者调用未使用任何成员变量的成员函数(即未用到this指针)

#include<iostream>
using namespace std;

class A
{
private:
int a;
double b;
char c;
static int d;
public:
void printf()
{
cout<< "shakalaka" <<endl;
}
virtual output()
{
cout<< "lalala" <<endl;
}
};

int main()
{
A a;
cout<< sizeof(a) <<endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: