C++ 构造函数


构造函数

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

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

示例

class MyClass {     // The class
  public:           // Access specifier
    MyClass() {     // Constructor
      cout << "Hello World!";
    }
};

int main() {
  MyClass myObj;    // Create an object of MyClass (this will call the constructor)
  return 0;
}
亲自试一试 »

笔记:构造函数与类具有相同的名称,它总是public,并且它没有任何返回值。


构造函数参数

构造函数还可以接受参数(就像常规函数一样),这对于设置属性的初始值非常有用。

下面的类有brand,modelyear属性,以及具有不同参数的构造函数。在构造函数内部,我们将属性设置为等于构造函数参数(brand=x, ETC)。当我们调用构造函数(通过创建类的对象)时,我们将参数传递给构造函数,构造函数会将相应属性的值设置为相同:

示例

class Car {        // The class
  public:          // Access specifier
    string brand;  // Attribute
    string model;  // Attribute
    int year;      // Attribute
    Car(string x, string y, int z) { // Constructor with parameters
      brand = x;
      model = y;
      year = z;
    }
};

int main() {
  // Create Car objects and call the constructor with different values
  Car carObj1("BMW", "X5", 1999);
  Car carObj2("Ford", "Mustang", 1969);

  // Print values
  cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
  cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
  return 0;
}
亲自试一试 »

就像函数一样,构造函数也可以在类外部定义。首先,在类内部声明构造函数,然后在类外部通过指定类名来定义它,然后是作用域解析::运算符,后跟构造函数的名称(与类相同):

示例

class Car {        // The class
  public:          // Access specifier
    string brand;  // Attribute
    string model;  // Attribute
    int year;      // Attribute
    Car(string x, string y, int z); // Constructor declaration
};

// Constructor definition outside the class
Car::Car(string x, string y, int z) {
  brand = x;
  model = y;
  year = z;
}

int main() {
  // Create Car objects and call the constructor with different values
  Car carObj1("BMW", "X5", 1999);
  Car carObj2("Ford", "Mustang", 1969);

  // Print values
  cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
  cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
  return 0;
}
亲自试一试 »