C++构造函数一般分为默认构造函数、普通构造函数、转换构造函数和拷贝构造函数
比如针对复数类
/* 复数类 */
class Complex {
public:
Complex(): real(0.0), imag(0.0){} // 默认构造函数
Complex(double _real, double _imag): real(_real), imag(_imag){} // 普通构造函数
Complex(double _real): real(_real), imag(0.0){} // 转换构造函数,将其他类型转换为类类型,
// 隐式转换会用到
Complex(const Complex &comp):real(comp.real), imag(comp.imag){} // 拷贝构造函数
private:
double real;
double imag;
};
前三个构造函数可以用带默认参数的构造函数替代,如下
/* 复数类 */
class Complex {
public:
Complex(double _real = 0.0, double _imag = 0.0): real(_real), imag(_imag){} // 带默认参数的构造函数
Complex(const Complex &comp):real(comp.real), imag(comp.imag){} // 拷贝构造函数
private:
double real;
double imag;
};
几个注意点:
1、任何 一个类有且只有一个默认构造函数,如果类中没有显式定义任何构造函数,编译器会自动生成一个合成默认构造函数,但是建议任何类都应定义一个默认构造函数
2、可以在声明的构造函数之前添加expl