반응형
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 멤버 변수에 저장합니다.
이렇게 생성자를 오버로딩하면 객체 생성 시 상황에 맞는 생성자를 호출할 수 있어 유연성을 제공합니다.
반응형
'C_C++' 카테고리의 다른 글
c++, 정적 멤버 변수와 정적 함수 static member variables and static functions (0) | 2024.11.02 |
---|---|
C++, 인라인 함수란? What is an inline function? (0) | 2024.10.21 |
C++, 클래스 기초: 자동차 클래스를 상속한 전기차 (0) | 2024.10.20 |
C++, 공용체 (union) 개요 (0) | 2024.10.17 |
(C++) 열거형 enum (0) | 2024.10.13 |