分类: C/C++
2014-11-03 08:14:37
一般而言所有的对象都需要一个确定的初始状态,一旦由于失误的原因,对象没有初始化,那么结果将是不确定的。没有初始化的对象其内部变量的值是不定的。
C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数,构造函数在定义时可以有参数,但是没有任何返回类型的声明。
构造函数的调用:一般情况下,c++编译器会自动调用构造函数,在一些情况下则需要手工调用构造函数
成员函数的重载:类的成员函数和普通函数一样可以进行重载,并遵守相同的重载规则
两个特殊构造函数:
无参构造函数:当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空。
拷贝构造函数:当类中没有定义拷贝构造函数时,编译器默认提供一个拷贝构造函数,简单的进行成员变量的值复制。
构造函数是c++中用于初始化对象状态的特殊函数,构造函数在对象创建时自动被调用,构造函数和普通成员函数都遵循重载规则,拷贝构造函数是对象正确初始化的重要保证。
C++中提供了初始化列表对成员变量进行初始化,语法规则:constructor():: constructor(): m1(v1), m2(v1,v2), m3(v3) {}
成员变量的初始化顺序与声明的顺序相关,与在初始化列表中的顺序无关,初始化列表先于构造函数的函数体执行
初始化是用已存在的对象或值对正在创建的对象进行初值设置,赋值是用已存在的对象或值对已经存在的对象进行值设置。
一般而言所有被销毁的对象都需要做清理。在构造函数中申请的资源需要在对象销毁前释放。
C++中的类可以定义一个特殊的成员函数清理对象,这个特殊成员函数叫做析构函数,
定义:~ClassName()
析构函数没有参数也没有任何返回类型的声明,析构函数在对象销毁时自动被调用。
构造函数与析构函数的调用秩序:当类中有成员变量是其它类的对象时,首先调用成员变量的构造函数,调用顺序与声明顺序相同,之后调用自身类的构造函数,析构函数的调用秩序与对应的构造函数调用秩序相反。
析构函数是c++中对象销毁时做清理工作的特殊函数,析构函数在对象销毁时自动被调用,析构函数是对象所使用的资源及时释放的保障,析构函数的调用秩序与构造函数相反。
可以直接调用构造函数吗?直接调用构造函数将得到一个临时对象,然后又被析构函数释放。构造一般只给编译器调用和在声明构造函数时手工调用,构造函数不支持调用构造函数。