一、对象中的成员变量的初始值是多少?
对象的初始化:
从程序设计的角度,对象只是变量,因此
----在栈上创建对象时,成员变量初始值为随机值
----在堆上创建对象时,成员变量初始值为随机值
----在静态存储区创建对象时,成员变量初始为0值
#include<stdio.h>
class Test
{
private:
int i;
int j;
public:
int getI()
{
return i;
}
int getJ()
{
return j;
}
};
Test gt; //全局的对象,在全局数据区占用空间,初始值统一为0
int main()
{
printf("gt.getI = %d\n",gt.getI());
printf("gt.getJ = %d\n",gt.getJ());
Test t1; //局部的对象,在栈上占用存储空间,初始值为随机值
printf("t1.getI() = %d\n",t1.getI());
printf("t1.getJ() = %d\n",t1.getJ());
Test* pt = new Test;
printf("pt->i = %d\n",pt->getI());
printf("pt->j = %d\n",pt->getJ());
delete pt;
return 0;
}
二、对象的初始化
.一般而言,对象都需要一个确定的初始状态
解决方案:
---在类中提供一个public的initialize函数
---对象创建后立即调用initialize函数进行初始化
class Test
{
private:
int i;
int j;
public:
void initialize() {i =0 ;j =0};
int getI() {return i};
int getJ() {return j};
};
三、构造函数
.C++中可以定义与类名相同的特殊成员函数
--这种特殊的成员函数叫做构造函数
.构造函数没有任何返回类型的声明
.构造函数在对象定义时自动被调用
四、小结
1.每个对象在使用之前都应该初始化
2.类的构造函数用于对象的初始化
3.构造函数与类同名并且没有返回值
4.构造函数在对象定义时自动调用