构造函数和析构函数

tech2023-06-10  111

构造函数和析构函数

构造函数

一、构造函数的特性

名字必须与类名相同不指定返回值类型可以无参,可以有多个形参。利用不同形参,一个类可以重载定义多个构造函数创建一个对象时,系统会根据实参自动调用某个构造函数 #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;//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不可带参数不允许重载
最新回复(0)