C_C++

C++, 생성자 오버로딩 개요 Constructor Overloading Overview

고니자니 2024. 10. 25. 20:31
반응형

C++에서 생성자 오버로딩(Constructor Overloading)은 하나의 클래스에 매개변수의 수나 타입이 다른 여러 개의 생성자를 정의하는 것입니다. 이를 통해 객체를 생성할 때 다양한 방법으로 초기화를 수행할 수 있습니다. C++에서는 함수 오버로딩을 허용하므로, 생성자 역시 다양한 형태로 정의할 수 있으며, 컴파일러는 생성자 호출 시 전달된 인수의 타입과 개수에 맞는 생성자를 자동으로 선택하여 호출합니다.

 

생성자 오버로딩 예제

#include <iostream>
#include <string>
using namespace std;

class Person {
private:
    string name;
    int age;

public:
    // 기본 생성자
    Person() {
        name = "Unknown";
        age = 0;
    }

    // 이름을 받는 생성자
    Person(string name) {
        this->name = name;
        age = 0;
    }

    // 이름과 나이를 받는 생성자
    Person(string name, int age) {
        this->name = name;
        this->age = age;
    }

    void display() {
        cout << "Name: " << name << ", Age: " << age << endl;
    }
};

int main() {
    Person person1;                    // 기본 생성자 호출
    Person person2("이순신");            // 이름을 받는 생성자 호출
    Person person3("홍길동", 25);          // 이름과 나이를 받는 생성자 호출

    person1.display();
    person2.display();
    person3.display();

    return 0;
}

(Output)

Name: Unknown, Age: 0
Name: 이순신, Age: 0
Name: 홍길동, Age: 25

생성자 오버로딩 개요

 

설명

  • Person() : 매개변수가 없는 기본 생성자이며, 이름은 "Unknown", 나이는 0으로 초기화됩니다.
  • Person(std::string name) : 이름만을 받는 생성자이며, 받은 이름을 name 멤버 변수에 저장하고, 나이는 기본값 0으로 설정됩니다.
  • Person(std::string name, int age) : 이름과 나이를 모두 받는 생성자이며, 각각을 name과 age 멤버 변수에 저장합니다.

이렇게 생성자를 오버로딩하면 객체 생성 시 상황에 맞는 생성자를 호출할 수 있어 유연성을 제공합니다.

 

 

반응형