是成员函数的一种
①名字与类名相同,可以有参数,但是不能有返回值(void也不行)
②作用是对对象进行初始化!!!如给成员变量赋初值!!!
③如果定义的时候没写构造函数,则编译器生成一个默认的无参数的构造函数。
④如果定义了构造函数,则编译器不生成默认的无参数的构造函数。
⑤对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数。
⑥一个类可以有多个构造函数。(参数个数或者类型不同)
①构造函数执行必要的初始化工作,不用担心忘记调用初始化函数。
②由于有时候对象没有被初始化九使用会导致程序出错,此可避免。
exp.
class Complex{
private:
double real,imag;
public:
void Set(double r,double i);
};//编译器自动生成默认构造函数
Complex cl;//默认构造函数被调用
Complex * pc=new Complex;//默认构造函数被调用
exp.
class Complex{
private:
double real,imag;
public:
Complex(double r,double i=0);
};
Complex::Complex(double r,double i){
real=r;imag=i;
}
Complex c1;//error,缺少构造函数参数
Complex *pc=new Complex;//error,没有参数
Complex c1(2);//OK
Complex c1(2,4),c2(3,5);//OK
Complex *pc=new Complex(3,4);
也是利用参数是否初始化
exp.


原文:https://www.cnblogs.com/AirBirdDD/p/12251590.html