무리스

반응형

[패스트캠퍼스 수강 후기] {C++실력완성} 100% 환급 챌린지 {23} 회차 미션

 

안녕하세요. 무리스입니다.

최근들어 코로나가 다시 심해지기 시작하네요.

2단계 격상이라니.. 다들 몸 관리 조심하시구 오늘도 환불챌린지 미션 시작합니다.

오늘은 패스트캠퍼스 데일리 미션 23회차 학습 기록 하겠습니다.

23회차에서는 09강, 10강, 11강 순으로 진행됩니다.

 

09강에서는 클래스 마지막인 클래스 - 멤버 함수 포인터에 대해 배워보겠습니다.

함수 포인터 때처럼 함수를 가리켰었습니다.

클래스의 멤버 함수도 가리켜보겠습니다.

 

기본적으로 클래스를 하나 만들겠습니다.

#include <iostream>

using namespace std;

class Person
{
public:
   void print(int i)
   {
      cout << i << endl;
   }
};
int main()
{
   void (Person:: * fn)(int) = &Person::print;
   
   Person person;
   (person.*fn)(1);
}

이런 식으로 작성할 수 도 있고

또,

#include <iostream>

using namespace std;

class Person
{
public:
   void print(int i)
   {
      cout << i << endl;
   }
};
int main()
{
   function<void(Person*, int)> func = &Person::print;
   
   Person person;
   func(&person, 1);
}

이렇게도 작성할 수 있습니다.

 

10강에서는 연산자 오버로딩 - 산술 연산자 오버로딩 -1 에 대해서 배워보겠습니다.

연산자 오버로딩을 배우게 되면 지금까지 만들었던 클래스의 객체들의 +, -에

저희가 만든 클래스에서도 사용하게 됩니다.

 

vector 코드를 작성해보겠습니다. 게임 관련 코딩쪽으로 상당히 많이 쓰이고 있습니다.

#include <iostream>

using namespace std;

class Vector
{
public:
   float x;
   float y;
   float z;
   
   Vector operator-()
   {
      return Vector{ -x, -y, -z };
   }
   Vector operator+(const Vector& v)
   {
      return Vector{x + v.x, y + v.y, z + v.z }; 
   }
   
   void print()
   {
      cout << "x : " << x << " y : " << y << " z " : << z << endl;
   }
};

int main()
{
   Vector v0{ 0, 1, 2 };
   Vector v1{ 1, 2, 3 };
   
   Vector v2 = v0 + v1;  // Vector v2 = v0.operator+(v1);
   Vector v3 = -v1; // Vector v3 = v1.operator-();
   
   v0.print();
   v1.print();
   v2.print();
   v3.print();
}

출력 값을 확인해 보겠습니다.

아래의 추가적인 연산자도 한번 고민해보세요.

// 단항 연산자 +

// 이항 연산자 -

// 이항 연산자 *

// 이항 연산자 /

// 전위 연산자 ++

// 후위 연산자 ++

 

다음 11강에서도 연산자 오버로딩 - 산술 연산자-2 를 이어서 배워보도록 하겠습니다.

#include <iostream>

using namespace std;

class VectorI
{
   friend class VectorF
   
private:
   float x;
   float y;
   float z;
   
public:
   VectorF(float x, float y, float z)
      : x(x), y(y), z(z)
   {
   }
};
  
class VectorF
{
private:
   float x;
   float y;
   float z;
public:
   VectorI(float x, float y, float z)
      : x(x), y(y), z(z)
   {
   }
   
   VectorF::operator+(const VectorI& v) const;
   {
      return VectorF(x + v.x, y + v.y, z + v.z);
   }
};

코드를 작성했지만 이게 맞는건지는 모르겠네요.

산술 연산자와 friend를 같이 사용하기 위해 헤드파일과 소스파일 구분없이 하나의 파일에

작성하다보니 실제 강의에서도 많이 꼬였습니다.

강조하고싶은 부분은 "클래스끼리도 friend를 줄 수 있다" 라고 합니다.

이 부분은 다시 복습해야될 것 같네요. 체크해두고 넘어가겠습니다.

 

연산자 오버로딩 - 산술 연산자 강의는 많이 어렵게 느껴지네요.

인터넷도 추가적으로 찾아보면서 다시 한번 복습해야될 것 같습니다.

 

23회차 데일리 미션도 공부하시느라 고생 많으셨습니다.

요즘 날씨가 부쩍 추워졌는데 다들 몸 관리 잘하시고

내일 24회차 데일리 미션으로 찾아뵙겠습니다.

 

이상입니다.

 

패스트캠퍼스 C++ 강의 링크를 걸어두겠습니다. 참고하세요~
올인원 패키지 : C++ 실력 완성 bit.ly/33beaFj

 

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

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

www.fastcampus.co.kr

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading