C++构造函数

构造函数是C++类的一个重要概念,它为对象的创建和初始化提供了一个清晰和灵活的方式。本文将详细介绍C++构造函数的相关知识。

一、构造函数基本概念

构造函数是一种特殊的成员函数,在创建对象时会自动调用。它的函数名与类名相同,没有返回值:

class Person {
public:
  Person() { 
    // 构造函数 
  }
};

Person p; // 创建对象时会自动调用构造函数

构造函数可以用来初始化对象的数据成员:

class Person {
public:
  Person() {
    name = "Unnamed";
    age = 0;
  }

private:
  string name;
  int age;
};

二、构造函数参数

构造函数可以包含参数,用于接受初始化数据:

class Person {
public:
  Person(string name, int age) {
    this->name = name;
    this->age = age;
  }  
};

Person p("John", 18);

三、构造函数重载

类中可以定义多个构造函数,用于根据不同参数创建对象:

class Person {
public:
  Person() {} 
  Person(string name) {}
  Person(string name, int age) {}
};

根据传入的参数不同,编译器会自动选择匹配的构造函数。

四、初始化列表

构造函数可以使用初始化列表初始化成员:

class Person {
public:
  Person(): name("Unnamed"), age(0) {}

private:
  string name;
  int age;  
};

初始化列表可以提高效率,并解决一些初始化顺序问题。

五、委托构造

一个构造函数可以通过this关键字调用其他构造函数:

class Person {
public:
  Person(): Person("Unnamed", 0) {}
  Person(string name): Person(name, 0) {}
  Person(string name, int age) {
    // ...
  }  
};

构造函数是C++类一个强大的功能,它为对象创建提供了简洁和灵活的初始化方式。合理利用构造函数可以大大提高代码的可读性和质量。