前面讲了类和类的对象。那么类的成员变量初始值是多少?
有人说是随机值,有人说是0。
下面以一个示例程序来进行分析。
#include <stdio.h>
class Test
{
private:
int i;
int j;
public:
int GetI() {return i;}
int GetJ() {return j;}
};
Test ti;
int main()
{
Test tt;
Test* tf = new Test;
printf("ti.i = %d, ti.j = %d\n", ti.GetI(), ti.GetJ());
printf("tt.i = %d, tt.j = %d\n", tt.GetI(), tt.GetJ());
printf("tf->i = %d, tf->j = %d\n", tf->GetI(), tf->GetJ());
return 0;
}
编译以后,得到下面的结果。
ti 这个对象在全局存储区,tt 这个对象在栈上分配空间,tf 这个对象在堆上分配内存。这个例子中,对象初始化时,得到的值是不确定的。
从程序设计的角度,对象只是一个变量。因此:
---- 在栈上创建对象是,成员变量初始为随机值。
---- 在堆上创建对象是