본문 바로가기

C++

13.getter, setter

1.Test01.h

#include<string>

using namespace std;

class Test01
{
private:
    
	string str;
	int iNum;
	float fNum;
    
public:
    
	Test01(int iNum1,float fNum1,string str1);	//생성자(int 변수,float 변수,string 변수)
	~Test01();
    
	int getiNum() { return iNum; }		//이것들이 getter
	float getfNum() { return fNum; }	//이름 앞에 get을 붙여준다. 강제성은 아니지만 문법!
	string getStr() { return str; }		//private이라 다른곳에선 확인 불가능한걸 확인시켜준다.

	void setiNum(int i) { iNum = i; }	//이것들이 setter
	void setfNum(float i) { fNum = i; }	//getter처럼 이름 앞에 set을 붙여준다.
	void setStr(string s) { str = s; }	//private이라 다른 곳에선 건들지 못하는걸 건들게 해줌
    
};

1. getter와 setter 모두 이름 앞에 get과 set을 붙여준다.
안한다고 터지거나 하진 않지만 그렇게들 사용한다함.

2. getter,setter 모두 private이 걸려있는 것들에 접근가능하게 해줌
getter로 변수의 값을 가져올 수 있고 setter로 변경이 가능!

2.Test01.cpp

#include"Test01.h"

Test01::Test01(int iNum1,float fNum1, string str1) : iNum(iNum1),fNum(fNum1),str(str1)
{
}

Test01::~Test01()
{
}

1.생성자로 받은 매개변수의 값으로 헤더에 선언된 변수들을 초기화

3.main

#include<iostream>
#include<string>
#include"Test01.h"

using namespace std;

void main()
{
	Test01 t01(14,3.145,"This onse's for you, saddam!");
    
    //getter로 main에서는 불러올 수 없던 변수들의 값을 확인
	cout << "변경 전 iNum : " << t01.getiNum() << endl;
	cout << "변경 전 fNum : " << t01.getfNum() << endl;
	cout << "변경 전 ch : " << t01.getStr() << endl << endl << endl;
    
    //setter로 입력된 변수들의 값을 변경
	t01.setiNum(50);
	t01.setfNum(static_cast<float>(9.999));
	t01.setStr("안녕하셰요 일런 머스큽니다");
    
    //getter로 변경된 값을 확인.
	cout << "변경 후 iNum : " << t01.getiNum() << endl;
	cout << "변경 후 fNum : " << t01.getfNum() << endl;
	cout << "변경 후ch : " << t01.getStr() << endl;
    
}

1. 처음 들어간 값은 14, 3,145 , "This onse's for you, saddam!" 이므로 
변경 전 iNum : 14
변경 전 fNum : 3.145
변경 전 ch : This onse's for you, saddam!
 이 출력된다.
 
2. 그 이후에
변경 후 iNum : 50
변경 후 fNum : 9.999
변경 후ch : 안녕하세요 일런 머스큽니다
 라고 출력된다.
 
 3. 이걸로 getter가 private 제한이 걸린 변수의 값을 가져올 수 있고
 4. setter가 제한이 걸린 값을 변경할 수 있다는 걸 알 수 있다.

이건 네놈 몫이다 사담!

 

'C++' 카테고리의 다른 글

16.맵(map)  (0) 2021.05.25
14.템플릿(template)  (0) 2021.05.24
12. 클래스의 상속 , 오버로딩과 오버라이딩  (0) 2021.05.21
11. 클래스, 접근제어자 ,생성자 소멸자  (0) 2021.05.20
10. 문자열 함수  (0) 2021.05.20