一个类的成员函数,到底在内存中,有多少份?如果这个类,实例化了很多对象。
网上很多人都说只有一份。
如果只有一份,例如下面例子,我有一个地方不明白:
在内存中,a+=10,这行代码中的a,是怎么与“某个具体的A对象”关联的?
- C/C++ code
Class A{ …… int a; void aPlusPlus() { a+=10; } ……}[解决办法]
实际上多了一个参数
aPlusPlus(A* pthis );
[解决办法]
楼上正解,成员函数调用约定为_thiscall,this指针虽然不会同其他参数一样push进堆栈,但会存储在寄存器(比如微软的编译器一般使用ECX)
[解决办法]
对象地址被隐式地传到了函数里。