C++中可以定义多个构造函数,每个构造函数可以有不同的参数列表,以便创建对象时可以使用不同的方式进行初始化。以下是一个示例:

#include <iostream>

class Person {
public:
    Person() {
        std::cout << "Default constructor called." << std::endl;
    }

    Person(std::string name) {
        std::cout << "Constructor with name parameter called." << std::endl;
        this->name = name;
    }

    Person(std::string name, int age) {
        std::cout << "Constructor with name and age parameters called." << std::endl;
        this->name = name;
        this->age = age;
    }

    std::string getName() {
        return name;
    }

    int getAge() {
        return age;
    }

private:
    std::string name;
    int age;
};

int main() {
    Person p1;
    Person p2("John");
    Person p3("Mary", 25);

    std::cout << "p1 name: " << p1.getName() << ", age: " << p1.getAge() << std::endl;
    std::cout << "p2 name: " << p2.getName() << ", age: " << p2.getAge() << std::endl;
    std::cout << "p3 name: " << p3.getName() << ", age: " << p3.getAge() << std::endl;

    return 0;
}

输出:

Default constructor called.
Constructor with name parameter called.
Constructor with name and age parameters called.
p1 name: , age: 0
p2 name: John, age: 0
p3 name: Mary, age: 25

注意,如果没有为类定义任何构造函数,则会自动生成一个默认构造函数。如果定义了一个参数化构造函数,则默认构造函数将不再存在,除非另外定义一个无参构造函数。在这种情况下,必须使用初始化列表来初始化类成员,否则它们将具有不确定的值。

C++定义多个构造函数

原文地址: https://www.cveoy.top/t/topic/bygt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录