构造和析构的基础知识
前言
创建一个对象时,常常需要做某些初始化的工作,例如对数据成员赋值,注意,类的数据成员是不能在声明类时初始化的
为了解决这个问题,C++编译器提供了 构造函数 来处理对象的初始化。构造函数是一种特殊的成员函数,与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行。
2、构造函数的分类(三个)
(1)无参构造函数
Test(){;}
(2)带参数构造函数
Test(inta,intb){;}
(3)赋值构造函数
Test(constTest&obj){;}
构造函数的调用
#include<iostream>usingnamespacestd;classTest{public:Test()//无参构造函数{m_a=0;m_b=0;cout<<"无参构造函数"<<endl;}Test(inta)//一个参数的有参构造函数{m_a=a;m_b=b;}Test(inta,intb)//有参构造函数//调用有参构造函数有三种方法{m_a=a;m_b=b;cout<<"有参构造函数"<<endl;}Test(constTest&obj)//赋值构造函数(copy构造函数){cout<<"我也是构造函数"<<endl;}public:voidprint(){cout<<"普通成员函数"<<endl;}protected:private:intm_a;intm_b;}voidmain(){Testt1;//无参构造函数的调用(对象后什么都不写)//有参函数的第一种调用方法括号法Testt1(1,2);//调用两个参数的构造函数t1.ptint();//有参函数的第二种调用方法=号法(=操作不再是C语言中的功能。C++对=进行了功能性增强)Testt2=(3,4);//调用一个参数的构造函数因为()号里是逗号表达式,结果为4;即最后一个数t2.print();Testt3=4;t2.print();//跟Testt2=(3,4)效果是一样的//有参函数的第三种调用方法手动的调用构造函数Testt4=Test(1,2);//调用了有两个参数的构造函数//直接调用构造函数,会产生匿名对象(涉及到匿名对象的去和留)cout<<"hello"<<endl;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。