class CTest
{
public:
Ctest(){}
~CTest(){}
static int GetAAA()
{
return AAA;
}
int GetB()
{
return b;
}
int GetSum()
{
return a + b + AAA;
}
public:
int a;
int b;
static int AAA;
}
int CTest::AAA = 10;
(1)我们定义好一个类后,编译后在可执行文件里只有代码(各成员函数的二进制代码)和全局数据和常量等,并没有任何对象。
(2)对象只有数据,包括成员变量和VPTR,new的实质是先调用malloc分配一块堆内存,然后把这块内存的地址(this)传给构造函数,用构造函数来对这块内存进行赋值。
(3)函数调用:对象.function(this,...),对象把自己的地址(this)作为隐含形参传过去,以便操作自己的数据。
(4)类的成员函数与全局函数的区别:在调用上的意义基本没区别,区别仅仅是成员函数在类的作用域内,避免冲突等