构造函数:
是成员函数的一种
- 名字与类名相同,可以有参数,不能有返回值
- 作用是对对象进行初始化,如给成员变量赋初值
- 如果定义类时没写构造函数,则编译器会生成一个默认的无参数构造函数,默认的构造函数不进行任何操作
- 对象生成时构造函数自动被调用。对象一旦生成,就再也不能调用构造函数
- 一个类可以有多个构造函数(重载成员函数)
为什么需要构造函数:
1)构造函数执行必要的初始化工作,有了构造函数,就不必专门再写初始化函数,也不用担心忘记调用初始化函数。
2)有时对象没被初始化就使用,会导致程序出错。
如何初始化对象:
1 class Complex 2 { 3 public: 4 Complex(double x1, double x2); 5 Complex(double x2); 6 Complex(); 7 ~Complex(); 8 9 private: 10 double f1, f2; 11 }; 12 13 Complex::Complex(double x1,double x2) 14 { 15 printf("1:%f %f\n",x1,x2); 16 } 17 18 Complex::Complex(double x2) { 19 printf("2:%f\n", x2); 20 }
1 Complex x1(1,2); 2 Complex *x2 = new Complex(1.0);//通过new运算符创建对象 3 Complex x3[3] = { Complex(3,4),1, };//创建三个不同的对象 4 Complex *x4 = new Complex[3];//通过new运算符创建三个相同的对象 5 Complex *x5[3] = { new Complex(5,6),new Complex(9),new Complex };//通过new运算符创建三个不同的对象 6 7 //通过new运算符创建的对象记得要用delete运算符进行删除!!! 8 9 /* 10 1:1.000000 2.000000 11 2:1.000000 12 1:3.000000 4.000000 13 2:1.000000 14 0: 15 0: 16 0: 17 0: 18 1:5.000000 6.000000 19 2:9.000000 20 0: 21 */