构造函数和析构函数
构造函数
一、构造函数的特性
名字必须与类名相同不指定返回值类型可以无参,可以有多个形参。利用不同形参,一个类可以重载定义多个构造函数创建一个对象时,系统会根据实参自动调用某个构造函数
#include<iostream>
using namespace std
;
class Complex{
private:
double Real
,Imag
;
public:
Complex(double a
,double b
)
{
Real
=a
;
Imag
=b
;
}
Complex()
{
Real
=0;
Imag
=0;
}
void print()
{
cout
<<Real
<<' '<<Imag
<<endl
;
}
};
int main()
{
Complex
a(1,2);
Complex b
;
a
.print();
b
.print();
return 0;
}
二、创建对象的常见三种情形
说明一个对象变量或者数组用new创建对象创建匿名对象
说明一个对象变量
Complex a
[2]={Complex(1,2),Complex(5,6)};
用new创建对象
Complex
*p
=new Complex(5,6);
创建匿名对象 特点:生命周期较短
f(Complex(1,2));
return Complex(1,2);
Complex(1,2).print();
a
=Complex(1,2);
PS:如果没定义构造函数,系统会构造一个什么都不做的构造函数
委托构造函数
同一个函数中有多个构造函数,为了避免重复编码,使用委托构造函数。
格式:
<类名
>(形参表
):<类名
>(实参表)
{函数体
};
x(int x
):x(){type
=x
;};
析构函数
一、定义
在对象消亡时调用 对象消亡:
全局、静态:程序结束局部:退出定义所在的块通过new的对象,用delete消除
二、特点
加“~”不能指定函数返回值,不能是void不可带参数不允许重载