[C++] 상수형 매개변수와 상수형 메서드

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

상수형 매개변수와 상수형 메서드


const의 쓰임새

  • 매개변수의 상수화 (모든 함수에서)

  • 메서드의 상수화 (클래스에서 멤버 메서드)

  • 실수 방지에 유용

  • ex) 은행 계좌 Class

#include <iostream>
using namespace std;

class Account {
   public:
    Account() : money(0) {}
    Account(int money) : money(money) {}
    void Deposit(const int d) {  // 매개변수 d는 절대 변하면 안되기 때문에 const를 사용한다.
        // d = money;               // 실수(버그) --> const를 사용해서 에러 호출
        money += d;
        cout << d << " 원을 예금했다" << '\n';
    }
    void Draw(int d) {
        if (money >= d) {
            money -= d;
            cout << d << " 원을 인출했다!!!" << '\n';
        }
    }
    // const int ViewMoney()는 반환형이 const int라는 의미. 헷갈리지 말기. 메서드 상수화에서는 괄호뒤에 const를 붙히자,
    int ViewMoney() const {  // 멤버변수를 리턴해주는 함수인데 갑자기 값을 건드리는 실수를 해버릴 수 있어서, 이를 막기 위해 메서더의 상수화를 사용
        // money++;             // 실수(버그) --> const를 사용해서 에러 호출
        return money;
    }

   private:
    int money;
};

int main(void) {
    Account doodle(200);
    doodle.Deposit(100);
    doodle.Draw(20);
    cout << doodle.ViewMoney() << '\n';
}
  • void Deposit(const int d) // 상수형 매개변수

    • 매개변수 d는 절대 변하면 안되기 때문에 const를 사용한다.
  • int ViewMoney() const // 메서드 상수화

    • 멤버변수를 리턴해주는 함수인데 갑자기 값을 건드리는 실수를 해버릴 수 있어서, 이를 막기 위해 메서드의 상수화를 사용
  • const int ViewMoney()

    • 반환형이 const int라는 의미. 메서드 상수화와 헷갈리지 말기. 메서드 상수화에서는 괄호 뒤에 const를 붙히자

참조) 두들낙서 C/CPP 강의

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

[C++] 연산자 오버로딩  (0) 2024.02.04
[C++] 멤버 메서드의 활용  (0) 2024.02.04
[C++] 클래스(Class) (2) - 정적 멤버, 정적 메서드  (0) 2024.01.30
[C++] 클래스(Class) (1)  (0) 2024.01.30
[C++] 네임스페이스(namespace)  (0) 2024.01.30
'Programming Language(Sub)/C++' 카테고리의 다른 글
  • [C++] 연산자 오버로딩
  • [C++] 멤버 메서드의 활용
  • [C++] 클래스(Class) (2) - 정적 멤버, 정적 메서드
  • [C++] 클래스(Class) (1)
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기 (456)
      • 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 (129)
        • Data Structure (27)
        • OS (14)
        • Database (10)
        • Network (21)
        • 컴퓨터구조 (5)
        • 시스템 프로그래밍 (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++] 상수형 매개변수와 상수형 메서드
상단으로

티스토리툴바