C++
멤버 메서드 활용하기
코다람쥐
2021. 12. 23. 15:00
https://www.youtube.com/watch?v=QaCpk53KuNg&list=PLlJhQXcLQBJqywc5dweQ75GBRubzPxhAk&index=66
1. 멤버 메서드의 선언, 정의 분리하기
#include <iostream>
using namespace std;
class Vector2 {
public:
Vector2();
Vector2(float x, float y);
float GetX() const;
float GetY() const;
private:
float x;
float y;
};
int main()
{
Vector2 a(2, 3);
Vector2 b(-1, 4);
cout << "a : (" << a.GetX() << ", " << a.GetY() << ")" << endl;
cout << "b : (" << b.GetX() << ", " << b.GetY() << ")" << endl;
}
Vector2::Vector2() : x(0), y(0) { }
Vector2::Vector2(float x, float y) : x(x), y(y) { }
float Vector2::GetX() const { return x; }
float Vector2::GetY() const { return y; }
클래스의 생성자와 메소드는 네임스페이스처럼 선언과 정의를 분리할 수 있다.
2. 멤버 메서드 활용
두 벡터를 더하는 연산을 수행하는 메서드를 구현해보자.
#include <iostream>
using namespace std;
class Vector2 {
public:
Vector2();
Vector2(float x, float y);
float GetX() const;
float GetY() const;
static Vector2 Sum(Vector2 a, Vector2 b) {
return Vector2(a.x + b.x, a.y + b.y);
}
Vector2 Add(Vector2 rhs) {
return Vector2(x + rhs.GetX(), y + rhs.GetY());
}
private:
float x;
float y;
};
int main()
{
Vector2 a(2, 3);
Vector2 b(-1, 4);
Vector2 c1 = Vector2::Sum(a, b);
Vector2 c2 = a.Add(b);
cout << "a : (" << a.GetX() << ", " << a.GetY() << ")" << endl;
cout << "b : (" << b.GetX() << ", " << b.GetY() << ")" << endl;
cout << "c1 : (" << c1.GetX() << ", " << c1.GetY() << ")" << endl;
cout << "c2 : (" << c2.GetX() << ", " << c2.GetY() << ")" << endl;
}
Vector2::Vector2() : x(0), y(0) { }
Vector2::Vector2(float x, float y) : x(x), y(y) { }
float Vector2::GetX() const { return x; }
float Vector2::GetY() const { return y; }
1.의 코드에서 Sum과 Add메서드를 추가했다.
Sum은 static을 사용하여 구현하였고 Add는 동적으로 선언하였다.