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;
}