일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 동영상 강의
- 산책하기 좋은 곳
- 추천
- 표준 라이브러리 함수
- 졸업 작품
- C++
- 실습
- 동영상
- 네트워크 프로그래밍
- 안드로이드 앱 개발
- 클래스 다이어그램
- 소켓 통신
- 알고리즘
- 소스 코드
- 표준 입출력
- Windows Forms
- 언제나 휴일
- 원격 제어 프로그램
- 실습으로 다지는 c#
- 유튜브 동영상 강의
- 졸업 작품 소재
- 프로젝트
- 충남 천안
- 강의
- 파이썬
- 무료 동영상 강의
- c#
- 언제나휴일
- 캡슐화
- c언어
Archives
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
[C++] 18. 상수화 멤버 본문
클래스를 정의할 때 멤버 필드 앞에 const를 붙여서 선언한 것을 상수화 멤버라고 말합니다. 비 정적 상수화 멤버 필드는 생성자에서 반드시 초기화 기법으로 상수 값을 설정해야 합니다. 그리고 정적 상수화 멤버 필드는 클래스 외부 선언에서 초기값을 지정해야 합니다.
class Student
{
const int num; //비 정적 상수화 멤버 필드
string name;
int hp;
static const int max_hp; //정적 상수화 멤버 필드
public:
Student(int _num,string _name);
};
const int Student::max_hp=200; //정적 상수화 멤버 필드 초기값 지정
Student::Student(int _num,string _name):num(_num)//비 정적 상수화 멤버 필드 초기화
{
name = _name;
}
예를 들어 학생 생성 시에 학번을 부여하고 이후에는 학번을 변경하지 못하게 상수 멤버 필드로 사용할 수 있습니다. 또 다른 예로 학생의 iq가 최대 200까지만 올라갈 수 있게 하려고 한다면 static 상수 멤버 필드로 정할 수 있습니다.
그리고 비 정적 멤버 메서드 선언 뒤에 const 키워드를 붙인 것을 상수화 멤버 메서드라 부릅니다. 상수화 멤버 메서드는 비 정적 멤버 메서드에만 사용할 수 있으며 메서드 내부에서는 개체의 상태를 바꿀 수 없습니다. 따라서 상수화 멤버 메서드에서는 멤버 필드 값을 변경할 수 없습니다. 주의할 점은 상수화 멤버 메서드는 클래스 외부 함수 정의문에도 반드시 const 키워드를 붙여야 합니다.
//Student.h
#pragma once
#include <iostream>
#include <string>
using namespace std;
class Student
{
const int num; //비 정적 상수화 멤버 필드
string name;
int hp;
static const int max_hp; //정적 상수화 멤버 필드
public:
Student(int _num,string _name);
void View()const;//상수화 멤버 메서드
};
//Student.cpp
#include "Student.h"
const int Student::max_hp=200; //정적 상수화 멤버 필드 초기값 지정
Student::Student(int _num,string _name):num(_num)//비 정적 상수화 멤버 필드 초기화
{
name = _name;
hp = 0;
}
void Student::View()const//상수화 멤버 메서드
{
cout<<"번호:"<<num<<" 이름:"<<name<<" HP:"<<hp<<endl;
}
//Program.cpp
#include "Student.h"
int main()
{
Student *stu = new Student(3,"홍길동");
stu->View();
delete stu;
return 0;
}
▷ 실행 결과
번호:3 이름:홍길동 HP:0
'C & C++ > 디딤돌 C++' 카테고리의 다른 글
[C++] 22. 캡슐화 최종 실습 – 시나리오 (0) | 2024.04.07 |
---|---|
[C++] 21. 캡슐화 실습2 – 학생 (1) | 2024.04.07 |
[C++] 20. 캡슐화 실습1 – 복소수 (0) | 2024.04.06 |
[C++] 19. 특별한 멤버 this (0) | 2024.04.06 |
[C++] 17. 정적(static) 멤버 (0) | 2024.04.06 |
[C++] 16. 생성자, 소멸자 (0) | 2024.04.06 |
[C++] 15. 접근 지정자 (0) | 2024.04.06 |
[C++] 14. 캡슐화 개요 (0) | 2024.04.06 |