c/c++ 类成员变量,成员函数的存储方式,以及this指针在c++中的作用

c/c++ 类成员变量,成员函数的存储方式,以及this指针在c++中的作用

c++不会像上图那样为每一个对象的成员变量和成员函数开辟内存空间,
而是像下图那样,只为每一个对象的成员变量开辟空间。成员函数的只开辟一个共用的空间,所有对象的都可以访问这个公共的空间。

但是就产生了一个问题,当某一个对象去调用某个成员函数的时候,这个成员函数怎么才能知道是哪个对象调用的它呢?

c++在某一个对象调用某个成员函数的时候,把这个对象的地址,隐式地作为这个函数的参数,传给了成员函数,所有可以在没成员函数里显示的使用this指针。

可以用下面的程序验证上面的理论。
打印类占用内存的大小和对象占用内存的大小,就可以看出来,只有成员变量占用的内存空间(注意,内存对齐)。

#include <iostream>
using namespace std;

class CGood{

  int amount;
  float price;
  float total_value;
  char name[21];
};

int main(){
  cout << sizeof(CGood) <<endl;
  CGood c1;
  cout << sizeof(c1) <<endl;
}

猜你喜欢

转载自www.cnblogs.com/xiaoshiwang/p/9479362.html
今日推荐