C++ 构造函数

构造函数

构造函数是一种特殊的方法,当创建类的对象时会自动调用它。

要创建构造函数,请使用与类相同的名称,后跟括号 ()

实例

class MyClass {     // 类
  public:           // 访问说明符
    MyClass() {     // 构造函数
      cout << "Hello World!";
    }
};

int main() {
  MyClass myObj;    // 创建 MyClass 的一个对象(这将调用构造函数)
  return 0;
}

亲自试一试

构造函数规则

  • 构造函数与类具有相同的名称
  • 没有返回类型(甚至没有 void)。
  • 它通常声明为 public
  • 它在创建对象时自动调用

带参数的构造函数

构造函数也可以接受参数(就像普通函数一样),这对于为属性设置初始值很有用。

下面的类具有 brandmodelyear 属性,以及一个带有不同参数的构造函数。在构造函数内部,我们将属性设置为等于构造函数的参数(brand = x 等)。

当我们调用构造函数时(通过创建类的对象),我们将参数传递给构造函数,这将把相应属性的值设置为相同的值:

实例

class Car {        // 类
  public:          // 访问说明符
    string brand;  // 属性
    string model;  // 属性
    int year;      // 属性
    Car(string x, string y, int z) { // 带参数的构造函数
      brand = x;
      model = y;
      year = z;
    }
};

int main() {
  // 创建 Car 对象并使用不同的值调用构造函数
  Car carObj1("BMW", "X5", 1999);
  Car carObj2("Ford", "Mustang", 1969);

  // 打印值
  cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
  cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
  return 0;
}

亲自试一试

在类外部定义的构造函数

您也可以使用作用域解析运算符 :: 在类外部定义构造函数。

实例

class Car {        // 类
  public:          // 访问说明符
    string brand;  // 属性
    string model;  // 属性
    int year;      // 属性
    Car(string x, string y, int z); // 构造函数声明
};

// 在类外部定义构造函数
Car::Car(string x, string y, int z) {
  brand = x;
  model = y;
  year = z;
}

int main() {
  // 创建 Car 对象并使用不同的值调用构造函数
  Car carObj1("BMW", "X5", 1999);
  Car carObj2("Ford", "Mustang", 1969);

  // 打印值
  cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
  cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
  return 0;
}

亲自试一试

为什么构造函数有用

当您创建对象时,构造函数会自动运行。它们会进行设置,以便一切立即准备就绪。

可以这样理解:当您订购披萨(对象)时,构造函数就是那位在披萨送到您手中之前添加酱汁、奶酪和配料的厨师——您不必自己动手!