Avatar ·

可以在C++中从一个构造函数调用另一个构造函数吗?(构造函数链)

大家好,同事们!我是一名初学C++的开发者,遇到了一个让我觉得很奇怪的问题。我有一个类,其中有几个构造函数。它们都做同样的事情:初始化字段、分配内存,但参数不同。例如,一个构造函数接受姓名和年龄,另一个只接受姓名(年龄默认为0),第三个什么都不接受(全部默认)。

以下是我尝试做的简化代码:

class Person {
public:
    std::string name;
    int age;

    // 带两个参数的构造函数
    Person(const std::string& n, int a) : name(n), age(a) {
        // 一些复杂的初始化,例如检查年龄
        if (age < 0) age = 0;
        std::cout << "Person created: " << name << ", " << age << std::endl;
    }

    // 带一个参数的构造函数
    Person(const std::string& n) {
        // 我想在这里调用 Person(n, 0),但这不起作用
    }
}