혼자서 이건가 아닌가 아리송 마리송!/#include <iostream>
C++_복습_접근제한자,TextGame,생성자,종료자
비비안개
2021. 8. 18. 05:50
1. 객체지향 프로그래밍 언어의 3대 특성
/// > 은닉성(캡슐화) : 코드에 대한 보안을 지키기위해 멤버의 접근여부를 판별함
/// > 상속성
/// > 다형성 : 같은 타입의 객체가 각각 다른 결과를 가질 수 있는 속성
2. 접근제한자
C++의 기본 접근제한자는 private, 클래스 외부에서 접근이 불가능하다.
#include <iostream>
using namespace std;
class Student
{
public:
enum Gender
{
Man,Woman
};
private:
const char* name;
int age;
Gender gender;
public: //메모리가 존재하지 않는 메서드로 값만 반환함
//Getter / 접근자
const char* GetName() //은닉성으로 나까지 접근 못할때 편법으로 뚫어줌, name의 메모리가 아닌 값만 반환됨
{
return name;
}
int GetAge()
{
return age;
}
//Setter / 설정자
void SetStudentInfo(const char* name, int age, Gender gender)
{
this->name = name;
this->age = age; //this포인터는 자기자신
this->gender = gender;
}
// 함수 뒤에 const : 해당 함수 내부에서 멤버에 대한 값 설정이 일어나지 않겠다.
void PrintStudentInfo() const
{
cout << "이름 : " << name << endl;
cout << "나이 : " << age << endl;
cout << "성별 : " << ((gender == Gender::Man) ? "남자" : "여자") << endl;
}
};
int main()
{
Student* student = new Student();
student->SetStudentInfo("김방방", 2, Student::Gender::Man);
//student->PrintStudentInfo(); // 이름, 나이, 성별 전체 출력
// 이름만 출력하고 싶은데 private이면 Getter를 이용해 메모리 없는 name값만 반환함
cout << student->GetName() << endl;
//cout << student->GetAge() << endl; //age도 age만 출력 가능
delete student;
student = nullptr;
return 0;
}
3. TextGame
함수쓸 때 처음에는 void로 했다가 다 쓰고 맞는 반환 형식으로 고치기
void SetHp(int hp) { this->hp = hp; }
// SetHp에서는 멤버변수 hp를 this포인터로 매개변수 hp를 참조?한다.
int GetHp() { return hp; }
//GetHp에서는 hp값을 반환한다.
호출되서 출력되는 타이밍이 다르면 출력도 따로 만든다.
target->SetHp(target->GetHp() - damage);
targer->hp = target->hp - damage; // 둘 다 같음
// target의 hp에 현재 target의 hp에서 damage를 뺀 값을 대입하겠다.
Enum::Type type; 은 Enum 안에 들어있는 Type이라는 구조체?이고 type은 변수?