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

2024. 2. 4. 06:21·Programming Language/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 > 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/C++' 카테고리의 다른 글
  • [C++] 동적할당
  • [C++] 연산자 오버로딩
  • [C++] 상수형 매개변수와 상수형 메서드
  • [C++] 클래스(Class) (2) - 정적 멤버, 정적 메서드
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Spring
        • MVC
        • DB
        • 핵심 원리
        • JPA
      • WEB
        • HTML
        • CSS
        • HTTP
        • Application
      • Computer Science
        • Network
        • Database
        • OS
        • 시스템 프로그래밍
        • 컴퓨터구조
      • Algorithm
        • Divide&Conquer
        • Sort
        • Greedy
        • DP
        • Backtracking
        • NP-Complete
        • Graph
      • Data Structure
        • 자료구조
        • C++ STL
        • Java Collection
      • 소프트웨어 공학
        • 시험 공부 정리
        • Theorem
      • Programming Language
        • Python
        • Java
        • C
        • C++
        • Rust
        • Theory
      • Unix_Linux
        • Common
      • React
      • PS
        • BOJ
        • Tip
        • 프로그래머스
        • CodeForce
      • Book Review
        • Clean Code
      • Math
        • Linear Algebra
      • AI
        • DL
        • ML
        • DA
        • Concepts
      • 우아한테크코스
        • 프리코스
      • Project Review
      • LegacyPosts
      • Android
      • Apple
        • Mac
        • IPhone
        • IPad
      • 모니터
      • Diary
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

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

티스토리툴바