728x90
반응형
클래스의 메서드를 선언과 정리를 분리해서 나타내보려고 한다.
메서드가 어디 소속인지 밝혀줘야 에러가 안뜨기 때문에 네임스페이스처럼
Vector2::Vector2():x(0),y(0) {} <-- 이런식으로 써줘야 한다.
또한 반환형이 있을 때는 반환 타입도 앞에 붙여줘야한다.
float Vector2::GetX()const { return x; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include<iostream>
using namespace std;
//벡터 만들기
class Vector2 {
public:
Vector2();
Vector2(float x,float y):x(x),y(y){}
float GetX()const;
float GetY()const;
private:
float x;
float y;
};
//선언과 정의를 분리
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; }
int main() {
Vector2 a(2, 3);
Vector2 b(-1, 4);
}
|
cs |
매개변수를 벡터 두개를 받아와서 둘이 더하는 방법도 있지만 동적으로 a에다가 b를 더하는 방법도 있다.
즉, a의 Add 함수를 통해 a의 멤버변수에 매개변수로 받아온 b를 더하는 방법이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#include<iostream>
using namespace std;
//벡터 만들기
class Vector2 {
public:
Vector2() :x(0), y(0) {
}
Vector2(float x, float y):x(x), y(y) {}
float GetX() const;
float GetY()const;
static Vector2 Sum(Vector2 a, Vector2 b) {
return Vector2(a.GetX() + b.GetX(), a.GetY() + b.GetY());
}
//동적으로
Vector2 Add(Vector2 rhs) {
return Vector2(x + rhs.x, y + rhs.y);
}
private:
float x;
float y;
};
//선언과 정의를 분리
float Vector2::GetX()const { return x; }
float Vector2::GetY()const { return y; }
int main() {
Vector2 a(2, 3);
Vector2 b(-1, 4);
Vector2 c=Vector2::Sum(a, b);
cout << c.GetX() << " " << c.GetY() << endl;
Vector2 c2 = a.Add(b);
cout << c2.GetX()<<" " << c2.GetY() << endl;
}
|
cs |
728x90
반응형
'C++ > 기초(두들낙서)' 카테고리의 다른 글
[C++] 분할 컴파일/ (0) | 2022.07.05 |
---|---|
[C++] 함수와 구조체 / 함수 포인터 / 참조변수 (0) | 2022.07.05 |
[C++] 공용체와 열거체 / 포인터 (0) | 2022.07.01 |
[C++] 정적 멤버 (static) (0) | 2022.07.01 |
[C++] 객체의 생성과 소멸 (0) | 2022.07.01 |
댓글