C++语法之构造、析构函数

老子叫甜甜 提交于 2020-03-30 16:08:34

C++语法之构造、析构函数

众所周知,在类的一个对象被创建时,编译系统就会自动为该对象分配空间。但在分配空间后还会自动调用一个函数,这个函数我们就称为构造函数。构造函数的作用是为对象的成员变量赋初值。

构造函数:构造函数可以有各种参数形式,一个类可以有多个一般构造函数,前提是参数的个数或者类型不同(基于c++的重载函数原理)。创建对象时,根据对象的类型不停,调用不同的构造函数。当没有定义构造函数时系统就会生成隐式的构造函数,无任何实际作用。

例如:

include

using namespace std;
class rec
{
public:
rec(){cout<<"构造一个长方形甲\n";}
rec(int l,int w){ length = l; width = w;cout << "长方形乙的面积为:" << 
       length * width << endl;}
rec(int l,int w,int h){ length=l ; width=w ; height=h ; cout<<"长方体丙的体积为:" <<lengthwidthheight<<endl;}
private:
int length;
int width;
int height;
};
void main()
{//下面分别调用不同的构造函数
rec a;
rec b(3,4);
rec c(3,4,10);
//C++构造函数还有种写法
//以上面的举例:rec () :length(3),width(4){}
/在构造函数的右边有个冒号(:),然后是成员变量的名称和一对小括号(),小括号中要是初始化的值或者表达式。如果对多个成员进行初始化,那么要用逗号将他们隔开,最后一对大括号{},大括号中就是函数所要执行的功能。/
}

析构函数

与构造函数相对的,就是析构函数,某个对象的作用即将结束时就会调用这个函数。同理,当没有定义析构函数时,编译器也会生成一个隐式的析构函数,无任何实用。
注意!!!析构函数是无法重载的;当在类中申请了空间,而过程中又没有释放回去,就需要在析构函数中释放,这样会很方便。
其格式为与构造函数类似,但要在前面加上~。
例如:

include

using namespace std;
class boom
{
public:
boom(){cout<<"炸弹开始计时!"<<endl;}//构造函数
~boom(){cout<<"时间结束,炸弹爆炸!"<<endl;}//析构函数,对象被清除时调用。
}
int main()
{
boom b;
return 0;
}
这段函数很简单,b存在于主函数中,与整个程序共存,当整个程序结束时,就会调用~boom()函数,这时屏幕上就会弹出 时间结束,炸弹爆炸!的字样。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!