标题:1.1构造函数和析构函数语法(详解)
两个函数了解
为什么要这两个函数:你拿到手机肯定要进行初始化,出场设置必须要有。卖二手机,你不可能直接把手机给别人,这样是不安全的,我们人都会清理手机,何况是死板的程序。
1.构造函数:用于初始化
作用:主要是在创建对象时为对象的成员属性赋值
语法:类名(){}
1.无返回值,也不能写void
2.函数名与类名相同
3.可以有参数,所以可以重载
4.程序在调用对象时会自动调用构造函数,无须手动调用,而且只会调用一次。手机不可能每天起床都是出场化设置让你选择语言,地区这些,所以只调用一次。
2.析构函数:用于清理
作用:主要作用于对象销毁前系统自动调用,执行一些清理操作
语法:~类名(){}
1.无返回值,也不能写void
2.函数名与类名相同但是最前面要加一个~符号
3.函数不可以有参数,所以不能够重载
4.程序在调用对象会自动调用析构函数,无须手动调用,而且只会调用一次。
注意事项:编译器会自动调用这两个函数,如果为我们不提供构造函数和析构函数,那么编译器会帮我们提供但是空实现。
1.构造函数:
从上图可以看出,我们就创建了一个对象什么都没干但是他自动调用了。
这句话也只出现了一次,所以我们可以理解为只调用了一次。
如果我们不写这一行代码,那么并不会出现呢构造函数的调用这些几个字,也就是编译器空实现(实现了空语句)。
2.析构函数:
看上图,析构函数也是自动调用,而且只调用了一次。
我们来深挖一下为什么会释放析构函数,我们这个是在函数里创建的对象。创建的是在栈区对吧,也就是说我们用的时候创建,不用的时候销毁。所以在销毁前调用了析构函数。
再看看另外一个例子:
看见没看见没,这次就没有析构函数了,为什么?我们多了一句system(”pause“)程序到这里就暂停了,但是并没有结束,对象还有没销毁,他说的喊我们按任意键继续。
程序结束,销毁对象,还是会释放。因为创建在主函数里面的局部变量在程序结束时也会被自动释放的。但是在system(”pause“)的时候并没有结束程序,也就是说并没有释放。所以没有出现析构函数的调用这句话。
注意事项:
构造函数必须要实现的,只是你不提供编译器会自动提供。
如有错误,希望大家的提醒。如果有什么问题可以在评论区留言,我们一起探讨。