C++面向对象- -类和对象的使用(一)

本文深入探讨了C++中的类和对象初始化,涵盖了构造函数的各种用法,包括无参构造函数、带参数构造函数、参数初始化表、构造函数重载和默认参数。此外,还介绍了析构函数的原理及其在对象生命周期结束时的作用,以及对象数组的初始化注意事项。
摘要由CSDN通过智能技术生成

这部分算是正式接触了类和对象,涉及到它们基础的应用。


目录

构造函数对类对象进行初始化

1、对象的初始化

2、构造函数实现数据成员的初始化

3、带参数的构造函数

4、参数初始化表对数据成员的初始化

5、构造函数的重载

6、使用默认参数的构造函数

析构函数

构造函数与析构函数

对象数组


 

构造函数对类对象进行初始化

当对象在创建时获得了一个特定的值,我们说这个对象被初始化。初始化不是赋值,初始化的含义是创建变量赋予其一个初始值,而赋值的含义是把当前值擦除,而以一个新值来替代。在汇编语言中,为变量分配空间时,初始化过的变量的初值位于可执行文件代码段数据后,会占用一定空间,不必要的初始化会造成磁盘空间的浪费。而在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值