본문 바로가기
C++/기초(두들낙서)

[C++] 멤버 메서드 활용하기

by Meaning_ 2022. 7. 2.
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(23);
    Vector2 b(-14);
 
 
    
 
}
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(23);
    Vector2 b(-14);
    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
반응형

댓글