入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2017-04-18 投稿人: 浏览次数:310

*类的成员函数是不占类空间的。
当我们实例化一个对象的时候,因为这个对象是用类定义的,那么它理所当然拥有了这个类的数据和函数。但是,一般情况下,不同的对象,他们的的数据值不同,但是函数的代码都相同。所以,为了节约存储空间(想象一下我们如果定义了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;
}
阅读更多
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像