c++类的构造函数

类的构造函数

·定义:

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。

构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。

构造函数可用于为某些成员变量设置初始值。

·无参构造函数

下面为实例:

 1 #include<iostream>
 2 using namespace std;
 3 class Line
 4 {
 5 public:
 6     void setLength(double len);
 7     double getLength(void);
 8     Line();//为构造函数
 9 
10 private:
11     double length;
12 };
13 
14 //成员函数定义,包括构造函数
15 Line::Line(void)
16 {
17     cout << "Object is being created" << endl;
18 }
19 void Line::setLength(double len)
20 {
21     length = len;
22 }
23 double Line::getLength(void)
24 {
25     return length;
26 }
27 
28 //程序主函数
29 int main()
30 {
31     Line line;
32     //设置长度
33     line.setLength(6.0);
34     cout << "Length of line:" << line.getLength() << endl;
35     system("pause");
36     return 0;
37     
38 }

上述代码运行结果:

·有参数的构造函数

默认的构造函数没有任何参数,但如果需要,构造函数也可以带有参数。这样在创建对象时就会给对象赋初始值,如下面的例子所示:

 1 #include <iostream>
 2  
 3 using namespace std;
 4  
 5 class Line
 6 {
 7    public:
 8       void setLength( double len );
 9       double getLength( void );
10       Line(double len);  // 这是构造函数
11  
12    private:
13       double length;
14 };
15  
16 // 成员函数定义,包括构造函数
17 Line::Line( double len)
18 {
19     cout << "Object is being created, length = " << len << endl;
20     length = len;
21 }
22  
23 void Line::setLength( double len )
24 {
25     length = len;
26 }
27  
28 double Line::getLength( void )
29 {
30     return length;
31 }
32 // 程序的主函数
33 int main( )
34 {
35    Line line(10.0);
36  
37    // 获取默认设置的长度
38    cout << "Length of line : " << line.getLength() <<endl;
39    // 再次设置长度
40    line.setLength(6.0); 
41    cout << "Length of line : " << line.getLength() <<endl;
42  
43    return 0;
44 }

上述代码运行结果如下所示:

 

·使用初始化列表来初始化字段

使用初始化列表来初始化字段:

Line::Line( double len): length(len)
{
    cout << "Object is being created, length = " << len << endl;
}

也可写为:

Line::Line( double len)
{
    cout << "Object is being created, length = " << len << endl;
    length = len;
}

假设有一个类 C,具有多个字段 X、Y、Z 等需要进行初始化,同理地,您可以使用上面的语法,只需要在不同的字段使用逗号进行分隔,如下所示:

C::C( double a, double b, double c): X(a), Y(b), Z(c)
{
  ....
}

 总结:

如果创建一个类你没有写任何构造函数,则系统会自动生成默认的无参构造函数,函数为空。
一旦你写了一个有参构造函数,系统就不会再自动生成这样一个默认的构造函数,如果希望有一个这样的无参构造函数,则需要自己显示地写出来

一般构造函数可以有各种参数形式,一个类可以有多个一般构造函数,前提是参数的个数或者类型不同

posted @ 2019-09-13 11:36  Zzzxy  阅读(1716)  评论(0编辑  收藏  举报