构造函数 是初始化的操作 比如新手机开机需要初始化设置一样 如果没有设置 编译器会自动生成空的构造函数
主要作用在于创建对象时的成员属性赋值,构造函数由编译器自动调用,无需手动调用
构造函数调用语法: 类名(){}
1、构造函数,没有返回值也不用写void
2、函数名称与类的名称相同
3、构造函数可以有参数,因此可以发生重载
4、程序在调用对象的时候会自动调用构造,无需手动调用,而且只会调用一次
5、构造函数要在公共权限内
#include<iostream> #include<string>using namespace std;class Teacher{ public: Teacher(string name="")//构造函数 与类名同名 无返回无void { cout<<"构造函数->请输入老师的姓名:" <<endl; cin>>name; cout<<"构造函数->请核对老师的姓名:"<<name<<endl; }};void Fun(){ Teacher T(""); //构造与析构无需调用 创建对象后自动调用 };int main() { Fun(); system("pause"); return 0;}
因为以上构造函数含有参数,所以创建对象时需要有字符串值,我们这里设置为空 Teacher T(“”)
以上代码在创建对象T后编译器就自动调用了构造函数Teacher。
假如类中并未有构造函数 则会自动生成一个空函数 即 Teacher(){}
析构函数 主要作用在于对象销毁前系统自动调用,执行一些清理工作,就好像坏的手机要销毁前需要把手机内的资料清空一样。
析构函数语法:~类名(){} 注意类名前要加 ~
1、析构函数,没有返回值 也不用写void
2、函数名称与类同民 名称前需要加 ~
3、析构函数不可有参数,因此不可以发生重载
4、程序在对象销毁前会自动调用析构,无需手动调用 而且只会调用一次
5、析构函数要在公共权限内
#include<iostream> #include<string>using namespace std;class Teacher{ public: ~Teacher()//析构函数 与类名同名 无返回无void 类名前加波浪号~ { cout<<"这是析构函数,自动调用" <<endl; }};void Fun(){ Teacher T1; //析构无需调用 创建对象后自动调用 };int main() { //Fun(); Teacher T1; system("pause"); return 0;}
注意析构函数名前需加波浪号~ (~符号的输入方法是英文状态下 按住shift键同时按住数字1左边的按键),大家可以动手试下 调用Fun() 和 直接在main函数内创建对象 会有什么样的区别。
调用Fun() 会感觉和构造函数没啥区别 但是如果直接在main函数内创建对象,就会发现区别所在了,析构函数会在你关闭的那一刻出现。
最后更新时间:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。