본문 바로가기
[ C++ ]/- C++ 실습연습

C++ [클래스_02, Class, get, set, 함수, 멤버함수, 멤버변수]

by MRG 2021. 7. 21.
728x90
반응형

▣ 안녕하세요. 이번장에서는 저번장에 이이서 클래스에 get, set 함수를 만들어보도록 하겠습니다.

결론부터 이야기하면 get, set을 만드는 이유는 간단하게 이야기해서 클래스에 있는 멤버 변수를 접근하게 

아니면 접근하지 못하게 구분하기 위한 함수라고 생각하시면 됩니다. 

코드를 입력하면서 이야기를 이어가도록 하겠습니다. 

 

▣ 저번장에서 공부했던 클래스 코드를 먼저 살펴보겠습니다.

클래스 멤버 함수 안에 조건문을 넣어서 잘못된 값을 멤버 변수에 대입하지 못하게 조건문을 넣은 코드입니다.

하지만 이 부분이 있더라도

game1.gameNumber = 10처럼 

직접 멤버변수에 접근해서 대입을 하게 되면 무용지물이 되게 됩니다. 

누구든 아무렇게나 멤버 변수를 접근할 수 있기 때문입니다. 

728x90

▣ private 으로 int gameNumber에 멤버 변수는 외부에서 접근하지 못하게 합니다.

하지만 private은 저번장에서 말씀드린것처럼 클래스 내부에 있는 함수들은 접근할 수 있습니다. 

 

▣ 그렇기 때문에 public으로 함수 두가지를 만들었습니다.

SetNumber() 함수는 멤버 변수에 값을 바꿀 수 있는 함수

GetNumber() 함수는 멤버 변수에 값만 가져올 수 있는 함수로 코드를 작성했습니다.

그리고 SetNumber()에 조건문을 넣어서 매개변수로 받은 값이 잘못되었다면 

잘못되었다는 문구가 나오고 return 하여 멤버 변수에 값을 세팅하지 못하게 하였고,

값에 형식이 맞다면 gameNumber = Number; 로 대입하여 매개변수로 받은 값을 멤버 변수에 값으로 

대입하게 하였습니다. 

 

▣ 그럼 GetNumber()함수를 호출하여서 값만 return 하여 받아오겠습니다. 

 

▣ 이렇게 Game game1game 1 객체를 생성하고 game 1.SetNumber(1); 1로 멤버 변수에 접근하여 값을 

바꿔줍니다. 조건이 맞기 때문에 문제가 없습니다. 

그리고 cout으로 game1.GetNumber()을 호출하면 멤버 변수에 직접 접근하는 게 아닌 그 값만 

return 하여 받아오면 출력이 잘 되는걸 확인할 수 있습니다. 

 

▣ 이번에는 game1.SetNumber(11)로 값을 더 넘치게 입력해보겠습니다. 

그리고 조건문을 좀 수정하여 잘못 입력하셨습니다. 를 출력을 하고 gameNumber = 0로 

대입을 하고 return을 해주면 이렇게 0으로 출력되는 걸 확인할 수 있습니다. 

 

▣ 이처럼 get(), set()함수를 통해서 멤버 변수에 직접적으로 접근할 수 없지만 그 용도에 따라 

접근하고 접근해서 세팅하고를 할 수 있게 함수를 만들었습니다. 

 

▣ 이걸 활용해서 은행업무를 보는 ATM기기프로그램을 만든다고 생각하고 코드를 한번 작성해보세요.

728x90
반응형

댓글