Overload : 과적하다. 너무 많이 주다. 과부하가 걸리게 하다.
함수 오버로딩도 뜻풀이 상, 함수 과부화 가 된다.
근데 개념상 이 개념이 맞다.
함수 오버로딩을 시도해보자.
#include <iostream>
void print(int x) { std::cout << "int : " << x << std::endl;}
void print(char x) { std::cout << "char : " << x << std::endl;}
void print(double x) { std::cout << "double : " << x << std::endl;}
int main(){
int a = 1;
char b = 'c';
double c = 3.2f;
print(a);
print(b);
print(c);
return 0;
}
print()라는 함수를 여러번 만들어 여러번 각각 호출시켰는데, 생각한 값이 바로 나왔다.
변경된 타입 | 변경될 타입 |
---|---|
int | char, unsigned char, short |
int, unsigned int | unsigned short |
double | float |
int | enum |
클래스의 멤버변수를 이런식으로도 선언할 수 있다.
#include <iostream>
class Date{
int year_;
int month_;
int day_;
public:
void SetDate(int year, int month, int date);
void AddDay(int inc);
void AddMonth(int inc);
void AddYear(int inc);
// 해당 월의 총 일수를 구함
int GetCurrentMonthTotalDays(int year, int month);
void ShowDate();
};
void Date::SetDate(int year, int month, int date){
...
}
void AddDay(int inc){
...
}
...
int main(){
Day day;
...
day.ShowDate();
...
return 0;
}
클래스 내에서 굳이 선언하지 않는 이유는?
클래스를 생성할 때 여러 값들을 지정하거나, 설정할 수 있게 생성자라는 것을 만든다.
#include <iostream>
class Date {
int year_;
int month_; // 1 부터 12 까지.
int day_; // 1 부터 31 까지.
public:
void SetDate(int year, int month, int date);
void AddDay(int inc);
void AddMonth(int inc);
void AddYear(int inc);
// 해당 월의 총 일 수를 구한다.
int GetCurrentMonthTotalDays(int year, int month);
void ShowDate();
// 생성자
Date(int year, int month, int day) {
year_ = year;
month_ = month;
day_ = day;
}
};
...
int main(){
Date day(2022, 2, 17);
day.ShowDate();
...
return 0;
}
생성자를 만들지 않고 클래스를 불러오면, 그냥 아무일 없이 클래스가 만들어진다.
Default생성자는 그런 일을 방지하고자, 생성자에 인자하나 없이 기본값을 설정하게 하는 생성자이다.
class Date {
int year_;
int month_; // 1 부터 12 까지.
int day_; // 1 부터 31 까지.
public:
void SetDate(int year, int month, int date);
void AddDay(int inc);
void AddMonth(int inc);
void AddYear(int inc);
// 해당 월의 총 일 수를 구한다.
int GetCurrentMonthTotalDays(int year, int month);
void ShowDate();
// Default 생성자
Date() {
year_ = 2022;
month_ = 02;
day_ = 17;
}
};
생성자를 여러개 생성할 수 있다. 그리고 다양한 생성자를 만들어 사용할 수 있다.
자바 공부할 땐 이거 자동으로 해주는 친구 있었는데..
class Date {
int year_;
int month_; // 1 부터 12 까지.
int day_; // 1 부터 31 까지.
public:
void SetDate(int year, int month, int date);
void AddDay(int inc);
void AddMonth(int inc);
void AddYear(int inc);
// 해당 월의 총 일 수를 구한다.
int GetCurrentMonthTotalDays(int year, int month);
void ShowDate();
// Default 생성자
Date() {
year_ = 2022;
month_ = 02;
day_ = 17;
}
// 생성자
Date(int year, int month, int day) {
year_ = year;
month_ = month;
day_ = day;
}
};