类的对象初始化问题
类的初始化(非new的情况下)有以下几种方式:
-
如果没有非默认构造函数,则在定义对象时自动调用默认构造函数,默认构造函数有三种,一种是系统默认的,一种是给构造函数的所有参数提供默认值,一种是重载一个没有参数的构造函数,在里面对所有成员进行初始化(只能选用其中一种)。此时类的对象定义可以如以下两种写法:
① 类名 对象名{} ② 类名 对象名
-
如果定义了非默认构造函数,类的对象有如下三种定义方式:
① 类名 对象名= 类名(参数值1,参数值2,·······) ② 类名 对象名(参数值1,参数值2,······) ③ 类名 对象名{参数值1,参数值2.······} ④ 类名 对象名={参数值1,参数值2,······}
需要注意的问题!!!
定义对象时,有些编译器可能会生成一个临时对象,再将内容赋值给该对象实现,因此会有构造函数和析构函数的调用。另外,若一个对象已经存在,再对它用初始化语句会导致程序创建一个新的,临时的对象,再将内容复制给它,随后调用析构函数,以删除该临时对象,不过有可能滞后调用。通常,初始化对象比对象赋值的效率更高。
Comments | NOTHING