因为类的存储空间的大小事该类的数据成员的所占的存储空间,而不包括成员函数所占的存储空间,成员函数的代码所占的空间是在类外,而不是在类中
第一:这个程序根本不可能通过目前的编译器编译的.
第二:下面是我改过后的代码,以及编译信息
#include
using namespace std;
class ClassA
{
private:
int a;
int b;
public:
ClassA(int x=1,int y=2):a(x),b(y){}
int add(int a,int b) { return (a+b); }
};
int main(){
ClassA a;
cout<
}
编译信息:
Borland C++ 5.6.4 for Win32 Copyright (c) 1993, 2002 Borland
D:\temp\sizeof.cpp:
Turbo Incremental Link 5.96 Copyright (c) 1997-2008 CodeGear
相信不用我解释我用什么编译器了吧?
以下是运行结果:
4
8
自己思考下吧.或者多看看书吧.我也没话可说了.
这样都能编译通过吗??
不过我没听说个函数还要站空间的,,,而且理论上也不需要什么指针啊,,,
或许是你记错了,,,
内联的直接在类里面找就可以了,,声明的,就到类的外面找呗,,编译器是强大的,,,
你说的可能是它的内置指针this,这个指针实质上是一个类指针它不是类的成员变量故不应该计算其中 ,另外你的程序有点小问题return语句应加个分号
函数所在的空间是代码区。。看一下C++内存管理方面的资料吧,有帮助的。