목차
반응형
반응형
💋 생성자란?
✔️ 개념
- 객체를 초기화하는 역할을 하는 member function
- 초기화 = member variables의 값을 초기화
- 객체 선언 시 자동으로 호출된다.
💋 생성자 코드에서 사용하기
✔️ 생성자 정의
- 이름은 클래스 이름과 동일하게
- 반환값은 없음
class Money {
public:
Money(int dollar, int cent) // 생성자
: dollar(dollar), cent(cent) {
}
int getDollars() const {
return dollar;
}
int getCents() const {
return cent;
}
private:
int dollar;
int cent;
};
✔️ 생성자 호출
int main() {
Money money1(4, 2), money2(5, 2);
}
- 생성자 자동으로 호출되며 객체가 생성된다.
✔️ 생성자 정의 방법들
1. 클래스 내에서 직접 정의하기
class Money {
public:
Money(int dollar, int cent){
this->dollar = dollar;
this->cent = cent;
};
int getDollars() const {
return dollar;
}
int getCents() const {
return cent;
}
private:
int dollar;
int cent;
};
2. class 먼저 정의하고 밖에서 정의하기
class Money {
public:
Money(int dollar, int cent);
int getDollars() const {
return dollar;
}
int getCents() const {
return cent;
}
private:
int dollar;
int cent;
};
Money::Money(int dollar, int cent) {
this->dollar = dollar;
this->cent = cent;
}
3. Initialization Section에서 정의하기
class Money {
public:
Money(int dollar, int cent);
int getDollars() const {
return dollar;
}
int getCents() const {
return cent;
}
private:
int dollar;
int cent;
};
Money::Money(int dollar, int cent)
: dollar(dollar), cent(cent) {
}
- {} 이전에 : 와 함께 정의하면 member 변수에 직접 접근할 수 있어서 좀더 깔쌈하게 정의할 수 있음.
💋 생성자 제대로 사용하기
✔️ 생성자 Overloading
overloading
- 같은 이름의 메서드를 클래스 내에서 여러 번 정의하지만, 매개변수의 타입이나 개수가 다른 경우
- 메서드 이름만 같고, 매개변수의 리스트가 다르기 때문에 완전히 다른 메서드임!
class DayOfYear {
public:
DayOfYear(int month, int day);
DayOfYear(int month); // 생성자 오버로딩
DayOfYear(); // 생성자 오버로딩
void input();
void output() {
cout << month << "월 " << day << "일" << endl;
};
int getMonth();
int getDay();
private:
int month;
int day;
void validateDate();
};
int main() {
DayOfYear date1(4, 16), date2(8, 10), date3(3, 1), date4; // 다양하게 호출 가능
}
✔️ Explicit Constructor Call
int main() {
DayOfYear date1(4, 16);
date1 = DayOfYear(5, 5);
}
- 이렇게 하면 앞서 선언한 4월 16일이 5월 5일로 뒤집어씌워진다.
✔️ 기본 생성자
- parameter가 하나도 없는 생성자
- 생성자가 하나도 없으면 컴파일러가 자동으로 생성해주지만, 개발자가 다른 생성자를 정의했다면 자동으로 생성해주지 못하므로 필요하다면 개발자가 직접 작성해 주어야 한다.
int main() {
DayOfYear date; // 기본 생성자 호출 (없으면 호출 안됨)
}

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
반응형
'C, C++' 카테고리의 다른 글
[C++] static 키워드 제대로 알고 사용하자!: 클래스에서 정적 변수와 정적 함수 사용 방법, 특징, 주의사항 (0) | 2024.05.09 |
---|---|
[C++] const 제대로 알고 사용하자!: 변수, 포인터, 함수, 파라미터에서 각각 사용되는 const의 의미 파헤치기 (0) | 2024.05.08 |
[C++] Inline Functions: 인라인 함수 왜 쓰지? 사용 방법과 장단점 (1) | 2024.05.07 |
[C++] 참조(Reference)란?: 참조 vs 포인터 vs 일반변수, 반환 타입으로 참조, & 연산자의 사용방법 (0) | 2024.04.29 |
[C] C언어의 자료형과 메모리 단위에 대한 기본적인 이해 (0) | 2024.03.14 |
반응형
반응형
💋 생성자란?
✔️ 개념
- 객체를 초기화하는 역할을 하는 member function
- 초기화 = member variables의 값을 초기화
- 객체 선언 시 자동으로 호출된다.
💋 생성자 코드에서 사용하기
✔️ 생성자 정의
- 이름은 클래스 이름과 동일하게
- 반환값은 없음
class Money {
public:
Money(int dollar, int cent) // 생성자
: dollar(dollar), cent(cent) {
}
int getDollars() const {
return dollar;
}
int getCents() const {
return cent;
}
private:
int dollar;
int cent;
};
✔️ 생성자 호출
int main() {
Money money1(4, 2), money2(5, 2);
}
- 생성자 자동으로 호출되며 객체가 생성된다.
✔️ 생성자 정의 방법들
1. 클래스 내에서 직접 정의하기
class Money {
public:
Money(int dollar, int cent){
this->dollar = dollar;
this->cent = cent;
};
int getDollars() const {
return dollar;
}
int getCents() const {
return cent;
}
private:
int dollar;
int cent;
};
2. class 먼저 정의하고 밖에서 정의하기
class Money {
public:
Money(int dollar, int cent);
int getDollars() const {
return dollar;
}
int getCents() const {
return cent;
}
private:
int dollar;
int cent;
};
Money::Money(int dollar, int cent) {
this->dollar = dollar;
this->cent = cent;
}
3. Initialization Section에서 정의하기
class Money {
public:
Money(int dollar, int cent);
int getDollars() const {
return dollar;
}
int getCents() const {
return cent;
}
private:
int dollar;
int cent;
};
Money::Money(int dollar, int cent)
: dollar(dollar), cent(cent) {
}
- {} 이전에 : 와 함께 정의하면 member 변수에 직접 접근할 수 있어서 좀더 깔쌈하게 정의할 수 있음.
💋 생성자 제대로 사용하기
✔️ 생성자 Overloading
overloading
- 같은 이름의 메서드를 클래스 내에서 여러 번 정의하지만, 매개변수의 타입이나 개수가 다른 경우
- 메서드 이름만 같고, 매개변수의 리스트가 다르기 때문에 완전히 다른 메서드임!
class DayOfYear {
public:
DayOfYear(int month, int day);
DayOfYear(int month); // 생성자 오버로딩
DayOfYear(); // 생성자 오버로딩
void input();
void output() {
cout << month << "월 " << day << "일" << endl;
};
int getMonth();
int getDay();
private:
int month;
int day;
void validateDate();
};
int main() {
DayOfYear date1(4, 16), date2(8, 10), date3(3, 1), date4; // 다양하게 호출 가능
}
✔️ Explicit Constructor Call
int main() {
DayOfYear date1(4, 16);
date1 = DayOfYear(5, 5);
}
- 이렇게 하면 앞서 선언한 4월 16일이 5월 5일로 뒤집어씌워진다.
✔️ 기본 생성자
- parameter가 하나도 없는 생성자
- 생성자가 하나도 없으면 컴파일러가 자동으로 생성해주지만, 개발자가 다른 생성자를 정의했다면 자동으로 생성해주지 못하므로 필요하다면 개발자가 직접 작성해 주어야 한다.
int main() {
DayOfYear date; // 기본 생성자 호출 (없으면 호출 안됨)
}

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
반응형
'C, C++' 카테고리의 다른 글
[C++] static 키워드 제대로 알고 사용하자!: 클래스에서 정적 변수와 정적 함수 사용 방법, 특징, 주의사항 (0) | 2024.05.09 |
---|---|
[C++] const 제대로 알고 사용하자!: 변수, 포인터, 함수, 파라미터에서 각각 사용되는 const의 의미 파헤치기 (0) | 2024.05.08 |
[C++] Inline Functions: 인라인 함수 왜 쓰지? 사용 방법과 장단점 (1) | 2024.05.07 |
[C++] 참조(Reference)란?: 참조 vs 포인터 vs 일반변수, 반환 타입으로 참조, & 연산자의 사용방법 (0) | 2024.04.29 |
[C] C언어의 자료형과 메모리 단위에 대한 기본적인 이해 (0) | 2024.03.14 |