> 文章列表 > C++构造函数

C++构造函数

C++构造函数

目录

默认构造函数

自定义构造函数

构造函数的调用

构造函数的注意事项

总结


在C++中,构造函数是一种特殊的成员函数,用于创建对象时初始化对象的成员变量。构造函数有默认构造函数和自定义构造函数之分,可以通过不同的方式来调用。

默认构造函数

无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只能有一个。注意:无参构造函数、全缺省构造函数、我们没写编译器默认生成的构造函数,都可以认为是默认构造函数。
例如,我们有一个名为Person的类,其中有一个成员变量名为age。如果我们没有定义任何构造函数,则编译器会自动生成一个默认构造函数,代码如下:

class Person {
public:int age;
};

在这个例子中,Person类没有定义任何构造函数,因此编译器会自动生成一个默认构造函数。
对于编译器自己生成构造函数,内置类型没有规定必须初始化(有些编译器会初始化),对于自定义类型则会调用自定义类型它自己的构造函数进行初始化。

自定义构造函数

除了默认构造函数,我们还可以定义自己的构造函数来初始化对象的成员变量。自定义构造函数可以有多个参数,用于初始化对象的不同成员变量。有了自定义构造函数编译器不会再自动生成默认构造函数。

例如,我们可以定义一个带有一个参数的构造函数来初始化Person类的age成员变量,代码如下:

class Person {
public:int age;Person(int a) {age = a;}
};

在这个例子中,我们定义了一个带有一个参数的构造函数,用于初始化age成员变量。在创建Person对象时,可以通过传入参数来调用构造函数,例如:

Person p(20);

在这个例子中,我们创建了一个名为p的Person对象,并将其age成员变量初始化为20。

构造函数的调用

在C++中,构造函数可以通过多种方式来调用,包括:

  1. 直接调用:使用类名和参数列表来直接调用构造函数。

  2. 隐式调用:在创建对象时,编译器会自动调用相应的构造函数。

  3. 显式调用:在创建对象时,可以显式地调用构造函数。

例如,我们可以通过以下方式来调用Person类的构造函数:

// 直接调用构造函数
Person p1(20);// 隐式调用构造函数
Person p2 = Person(20);// 显式调用构造函数
Person* p3 = new Person(20);

在这个例子中,我们使用了不同的方式来调用Person类的构造函数。直接调用和隐式调用都是在栈上创建对象,而显式调用则是在堆上创建对象。

构造函数的注意事项

在使用构造函数时,需要注意以下几点:

  1. 构造函数的名称必须与类名相同,且没有返回类型。

  2. 构造函数可以有多个重载版本,根据参数列表的不同来区分。

  3. 在定义自定义构造函数时,需要显式地调用默认构造函数来初始化对象的成员变量。

  4. 构造函数可以使用初始化列表来初始化对象的成员变量,这比在函数体内显式赋值更高效。

总结