무리스

반응형

[패스트캠퍼스 수강 후기] {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

 

C++ 실력 완성 올인원 패키지 Online. | 패스트캠퍼스

선데이토즈, ICON Foundation 출신 Core 개발자가 직접 알려주는 C++의 모든 것. 애니팡 게임을 직접 만들어 보며 어려운 C++의 원리를 이해하고 실무에서 쓸 수 있는 수준까지 만들어 드립니다.

www.fastcampus.co.kr

 

2020/11/18 - [프로그래밍] - [패스트캠퍼스 수강 후기] {C++ 실력완성} 100% 환급 챌린지 {17} 회차 미션

2020/11/17 - [프로그래밍] - [패스트캠퍼스 수강 후기] {C++ 실력완성} 100% 환급 챌린지 {16} 회차 미션

2020/11/16 - [프로그래밍] - [패스트캠퍼스 수강 후기] {C++ 실력완성} 100% 환급 챌린지 {15} 회차 미션

2020/11/15 - [프로그래밍] - [패스트캠퍼스 수강 후기] {C++ 실력완성} 100% 환급 챌린지 {14} 회차 미션

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading