这部分算是正式接触了类和对象,涉及到它们基础的应用。
目录
构造函数对类对象进行初始化
当对象在创建时获得了一个特定的值,我们说这个对象被初始化。初始化不是赋值,初始化的含义是创建变量赋予其一个初始值,而赋值的含义是把当前值擦除,而以一个新值来替代。在汇编语言中,为变量分配空间时,初始化过的变量的初值位于可执行文件代码段数据后,会占用一定空间,不必要的初始化会造成磁盘空间的浪费。而在C/C++语言等高级语言中,为每一个变量赋初值被视为良好的编程习惯,有助于减少出现Bug的可能性。因此,是否对不必要的变量初始化依情况而定。初始化时是按照数据成员在类里被声明的顺序进行初始化
1、对象的初始化
对象的初始化和之前的那些定义变量时的初始化不一样,它不能在类声明中对数据进行初始化,因为类并不是一个实体,而是一种抽象类型,不占用存储空间,无法容纳数据。
class Time{
int hour=0;
int min=0;
int sec=0;
};
如果一个类中所有的数据成员都是公用的,那么在定义对象时可以对数据成员进行初始化。但一般来说类中的数据成员都是私有的,因为要保持信息隐蔽的特性,所以这种方法基本上不会有。
class Time{
public:
int hour ;
int min ;
int sec ;
};
Time t= {0,0,0}; //此处注意是中括号,和后边构造函数初始化的表示不一样。
2、构造函数实现数据成员的初始化
构造函数是一种特殊的成员函数,与其它成员函数不同,不需要用户调用,也不能被用户调用,而是在建立对象时自动执行。构造函数的名字必须是与类名一样,不能任意命名,以便系统能识别它作为构造函数处理。且不具有任何类型,不返回任何值,只是对对象进行初始化。
class Time{
int hour ;
int min ;
int sec ;
public:
Time(){
hour=0;
min=0;
sec=0;
}
};
在主函数执行时,一旦类建立对象,该构造函数将会自动执行,执行构造函数的过程中对 对象 中的数据成员赋初值,赋值在构造函数体中实现。另外还可以在类内仅声明构造函数,在类外对构造函数进行定义,只需加上 类名 和域限定符 “::” 即可。
class Time{
int hour ;
int min ;
int sec ;
public:
Time();
};
Time :: Time(){
hour=0;
min=0;
sec=0;
}
当类建立对象时,系统开始为这个对象分配存储单元,此时便执行构造函数,每建立一个对象,就调用一个构造函数。构造函数是定义对象时由系统自动执行的,而且只能执行一次,构造函数一般声明为 public 。另外还可以用一个类对象对另一个类对象进行初始化。
Time t1 ;
Time t2=t1 ;
在构造函数的函数体中可以有其他语句,像 “cou