[패스트캠퍼스 수강 후기] {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++실력완성} 100% 환급 챌린지 {25} 회차 미션 (0) | 2020.11.26 |
---|---|
[패스트캠퍼스 수강 후기] {C++실력완성} 100% 환급 챌린지 {24} 회차 미션 (1) | 2020.11.25 |
[패스트캠퍼스 수강 후기] {C++실력완성} 100% 환급 챌린지 {22} 회차 미션 (0) | 2020.11.23 |
[패스트캠퍼스 수강 후기] {C++실력완성} 100% 환급 챌린지 {21} 회차 미션 (0) | 2020.11.22 |
[패스트캠퍼스 수강 후기] {C++실력완성} 100% 환급 챌린지 {20} 회차 미션 (1) | 2020.11.21 |