对象的内存:
对象的内存可以存在于3种地方
1、全局区(数据段): 全局变量
2、栈空间:函数里面的局部变量
3、堆空间:动态申请内存(malloc、new等)
//全局区
Person g_person;
int main(){
//栈空间
Person person;
//堆空间
Person *p=new Person;
return 0;
//这不是申请对象,这是函数申明
Person person();
}
构造函数(Constructor)
构造函数(也叫构造器),在对象创建的时候自动调用,一般用于完成对象的初始化工作
函数名与类同名,无返回值(void都不能写),可以有参数,可以重载,可以有多个构造函数
一旦自定义了构造函数,必须用其中一个自定义的构造函数来初始化对象
通多malloc分配的对象不会调用构造函数
如果定义了构造函数,除了全局区,其他内存空间的成员变量默认都不会被初始化,需要开 发人员手动初始化
析构函数(Destructor)
析构函数(也叫析构器),在对象销毁的时候自动调用,一般用于完成对象的清理工作
函数名以“~”开头,与类同名,无返回值(void都不能写),无参,不可以重载,有且只有一 个析构函数
通过malloc分配的对象free的时候不会调用构造函数
构造函数、析构函数要声明为public,才能被外界正常使用