[패스트캠퍼스 수강 후기] {C++실력완성} 100% 환급 챌린지 {18} 회차 미션
안녕하세요. 무리스입니다.
오늘은 하루종일 흐리고 비가 왔네요.
지인이 오늘 소고기를 사준다고 해서 저녁으로 소고기를 먹고 왔습니다.
소고기도 먹었겠다 오늘 18회차 학습 기록은 더 잘할 수 있을 것 같네요~
오늘만 버티면 내일은 금요일이니 다들 기분 좋게 학습을 시작하셨으면 좋겠습니다.
18회차에서는 52강, 53강, 54강 순으로 진행해보겠습니다.
52강은 함수 - 오버로딩에 대해서 알아보도록 하겠습니다.
#include <iostream>
using namespace std;
int countDigit(int num)
{
if (num == 0)
return 1;
int count = 0;
while (num)
{
num /= 10;
++count;
}
return count;
}
int countDigitStr(string num)
{
return countDigit(stoi(num));
}
count << countDigit(12345) << endl;
count << countDigit("12345") // endl;
}
#include <iostream>
#include <string>
using namespace std;
void func(int, int); // func#int-int
void func(char); // func#char
int main()
{
func(10, 10); // func#int-int
func('a') // func#char
}
서로 다른 함수를 같은 이름으로 호출할 수 있는 것을 함수 오버로딩이라고하고,
매개변수의 타입에 따라서 어떤 함수를 결정할 지 정해집니다.
다음 53강에서는 함수 - 함수 포인터에 대해서 배워보겠습니다.
함수도 어딘가의 메모리상에 위치하게 됩니다.
지금까지는 메모리상의 데이터만 다뤄었는데요, 함수도 메모리 어딘가에 존재합니다.
함수도 메모리에 있으니 포인터로 가리킬 수 있을 것으로 보이는데요.
한번 알아보도록 하겠습니다.
#include <iostream>
using namespace std;
int sum(int x, int y)
{
return x + y;
}
int (*f)(int, int)
int main()
{
int (*f)(int, int) = sum;
cout << (*f)(1, 2) << endl;
}
이런 식으로 sum 함수를 활용해보았습니다.
이번엔 콜백에 대해서 알아보겠습니다.
#include <iostream>
using namespace std;
enum struct RequestType
{
Login, Register, Update, Delete
};
bool onLogin(string id, string password)
{
cout << "onLogin" << endl;
cout << id << endl;
cout << password << endl;
return true;
}
bool onRegister(string id, string password)
{
cout << "onRegister" << endl;
cout << id << endl;
cout << password << endl;
return true;
}
bool onUpdate(string id, string password)
{
cout << "onUpdate" << endl;
cout << id << endl;
cout << password << endl;
return true;
}
bool onDelete(string id, string password)
{
cout << "onDelete" << endl;
cout << id << endl;
cout << password << endl;
return true;
}
int main()
{
bool (*callbacks[])(string, string) {
onLoing, onRegister, onUpdate, onDelete
};
callbacks[(int)RequestType::Login]("david", "1234");
callbacks[(int)RequestType::Register]("david", "1234");
callbacks[(int)RequestType::Update]("david", "1234");
callbacks[(int)RequestType::Delete]("david", "1234");
}
좀 길지만 이런 식을 콜백을 사용할 수 있습니다.
#include <iostream>
using namespace std;
struct Character
{
int health;
void (*dieCallback)();
};
void damaged(Character character)
{
character.health -= 100;
if (character.health <= 0)
{
cout << "died" << endl;
if (character.dieCallback)
character.dieCallback();
}
}
void gameOver()
{
cout << "gameOver" << endl;
}
int main()
{
Character character0{ 200, nullptr };
Character character1{ 200, gameOver };
damaged(character0};
damaged(character1};
}
이번엔 게임을 예로 들어 캐릭터가 데미지를 입을 경우 gameOver 되는 식을 작성해봤습니다.
다음 54강에서는 함수 - 호출 규약에 대해서 알아보겠습니다.
호출 규약을 알게 되면 C++에서 함수 호출이 어떤 식으로 호출되는지 알 수 있습니다.
디테일하게 들어가기 보다는 전반적으로 머릿 속으로 그린다는 느낌으로 알아보겠습니다.
int result = sum(10, 20);을 살펴보겠습니다.
아래에서 위로 역순으로 값이 올라갑니다.
그 다음
int total = x + y;
return total;
}
오늘도 이렇게 해서 52강, 53강, 54강 학습이 모두 끝났습니다.
다소 어려운 개념이라고 생각되지만, 전반적으로 느낌을 파악하는 정도로
접근하시면 될 것 같습니다.
오늘 비도 오는데 다들 고생하셨습니다.
내일 19회차로 다시 찾아뵙겠습니다.
이상입니다.
패스트캠퍼스 C++ 강의 링크를 걸어두겠습니다. 참고하세요~
올인원 패키지 : C++ 실력 완성 https://bit.ly/33beaFj
2020/11/18 - [프로그래밍] - [패스트캠퍼스 수강 후기] {C++ 실력완성} 100% 환급 챌린지 {17} 회차 미션
2020/11/17 - [프로그래밍] - [패스트캠퍼스 수강 후기] {C++ 실력완성} 100% 환급 챌린지 {16} 회차 미션
2020/11/16 - [프로그래밍] - [패스트캠퍼스 수강 후기] {C++ 실력완성} 100% 환급 챌린지 {15} 회차 미션
2020/11/15 - [프로그래밍] - [패스트캠퍼스 수강 후기] {C++ 실력완성} 100% 환급 챌린지 {14} 회차 미션
[패스트캠퍼스 수강 후기] {C++실력완성} 100% 환급 챌린지 {20} 회차 미션 (1) | 2020.11.21 |
---|---|
[패스트캠퍼스 수강 후기] {C++실력완성} 100% 환급 챌린지 {19} 회차 미션 (2) | 2020.11.20 |
[패스트캠퍼스 수강 후기] {C++ 실력완성} 100% 환급 챌린지 {17} 회차 미션 (0) | 2020.11.18 |
[패스트캠퍼스 수강 후기] {C++ 실력완성} 100% 환급 챌린지 {16} 회차 미션 (0) | 2020.11.17 |
[패스트캠퍼스 수강 후기] {C++ 실력완성} 100% 환급 챌린지 {15} 회차 미션 (0) | 2020.11.16 |