[C++] 멤버 메서드의 활용

2024. 2. 4. 06:21·Programming Language(Sub)/C++

멤버 메서드의 활용


  • 멤버 메서드는 선언과 정의를 분리하는 것이 좋음

    • 함수 내에서 다른 함수를 참조 하는 것처럼 멤버 메서드 내에서 다른 메서드를 참조할 수 있기 때문
#include <iostream>
using namespace std;

class Vector2 {
   public:
    // Vector2() : x(0), y(0) {}
    Vector2();
    // Vector2(float x, float y) : x(x), y(y) {}
    Vector2(float x, float y);
    // get함수는 const로 선언하는 것이 좋음
    // float GetX() const { return x; }
    float GetX() const;

    // float GetY() const { return y; }
    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.x, y + rhs.y);
        // rhs.GetX()를 사용 안해도 된다. 
        // 참조 : https://blog.naver.com/PostView.naver?blogId=tipsware&logNo=221667799577
    }

   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; }

/* --> 정적 함수로
Vector2 Sum(Vector2 a, Vector2 b) {
    return Vector2(a.GetX() + b.GetX(), a.GetY() + b.GetY());
} 
*/

int main(void) {
    Vector2 a(2, 3);
    Vector2 b(-1, 4);
    cout << a.GetX() << " , " << a.GetY() << '\n';
    cout << b.GetX() << " , " << b.GetY() << '\n';
    Vector2 c = Vector2::Sum(a, b);
    Vector2 c2 = a.Add(b);
    cout << c.GetX() << " , " << c.GetY() << '\n';
    cout << c2.GetX() << " , " << c2.GetY() << '\n';
}
  • static Vector2 Sum(Vector2 a, Vector2 b) (정적으로 선언)

  • Vector2 Add(Vector2 rhs) (동적으로 선언)

    • 객체 a에 매개변수로 b를 받아 a + b를 리턴

    • 이와 같은 함수의 형태를 기반으로 연산자 오버로딩이 가능함(다음 챕터에서 다룸)

참조) 두들낙서 C/C++ 강좌

'Programming Language(Sub) > C++' 카테고리의 다른 글

[C++] 동적할당  (0) 2024.02.04
[C++] 연산자 오버로딩  (0) 2024.02.04
[C++] 상수형 매개변수와 상수형 메서드  (0) 2024.02.04
[C++] 클래스(Class) (2) - 정적 멤버, 정적 메서드  (0) 2024.01.30
[C++] 클래스(Class) (1)  (0) 2024.01.30
'Programming Language(Sub)/C++' 카테고리의 다른 글
  • [C++] 동적할당
  • [C++] 연산자 오버로딩
  • [C++] 상수형 매개변수와 상수형 메서드
  • [C++] 클래스(Class) (2) - 정적 멤버, 정적 메서드
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기 (457)
      • Software Development (27)
        • Performance (0)
        • TroubleShooting (1)
        • Refactoring (0)
        • Test (8)
        • Code Style, Convetion (0)
        • DDD (0)
        • Software Engineering (18)
      • Java (71)
        • Basic (5)
        • Core (21)
        • Collection (7)
        • 멀티스레드&동시성 (13)
        • IO, Network (8)
        • Reflection, Annotation (3)
        • Modern Java(8~) (12)
        • JVM (2)
      • Spring (53)
        • Framework (12)
        • MVC (23)
        • Transaction (3)
        • AOP (11)
        • Boot (0)
        • AI (0)
      • DB Access (1)
        • Jdbc (1)
        • JdbcTemplate (0)
        • JPA (14)
        • Spring Data JPA (0)
        • QueryDSL (0)
      • Computer Science (130)
        • Data Structure (27)
        • OS (14)
        • Database (10)
        • Network (21)
        • 컴퓨터구조 (6)
        • 시스템 프로그래밍 (23)
        • Algorithm (29)
      • HTTP (8)
      • Infra (1)
        • Docker (1)
      • 프로그래밍언어론 (15)
      • Programming Language(Sub) (77)
        • Kotlin (1)
        • Python (25)
        • C++ (51)
        • JavaScript (0)
      • FE (11)
        • HTML (1)
        • CSS (9)
        • React (0)
        • Application (1)
      • Unix_Linux (0)
        • Common (0)
      • PS (13)
        • BOJ (7)
        • Tip (3)
        • 프로그래머스 (0)
        • CodeForce (0)
      • Book Review (4)
        • Clean Code (4)
      • Math (3)
        • Linear Algebra (3)
      • AI (7)
        • DL (0)
        • ML (0)
        • DA (0)
        • Concepts (7)
      • 프리코스 (4)
      • Project Review (6)
      • LegacyPosts (11)
      • 모니터 (0)
      • Diary (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
lumana
[C++] 멤버 메서드의 활용
상단으로

티스토리툴바