8. 클래스(Class)에 대해서 궁금해!
2021. 11. 24. 21:19ㆍc++/기초
클래스는 객체지향의 핵심적인 부분이다.
객체지향이란?
프로그램의 크기가 존나게 커지자 절차지향을 벗어난 새로운 패러다임이 필요해짐. (유지 보수, 코드 재사용)
객체란?
변수들과 함수로 이루어진 덩어리.
그럼 구조체(struct)와 뭐가 다름?
구조체는 변수만을 저장하는 새끼임. 걍 클래스가 더 우월함. (내 생각ㅋㅋ)
#include <iostream>
using namespace std;
class Animal {
private:
int food;
int weight;
public:
void set_animal(int _food, int _weight) {
food = _food;
weight = _weight;
}
void increase_food(int inc) {
food += inc;
weight += (inc / 3);
}
void view_animal() {
cout << "이 동물의 food : " << food << endl;
cout << "이 동물의 weight : " << weight << endl;
}
};
int main() {
Animal animal;
animal.set_animal(100, 50);
animal.view_animal();
animal.increase_food(50);
animal.view_animal();
}
자 객체를 만드는 방법은 바로 class를 만드는 것이다. class는 객체의 설계도이고, 우리는 이 객체를 활용해서
그때 그때 코드를 쓰는 게 아닌 무한 객체 재사용을 할 수 있다.
우선 class는 멤버 변수와 멤버 함수로 이루어진다. private안에 있는 변수는 접근할 수 없다.
대신 public에 있는 함수를 활용해 값을 변경할 수 있다.
왜 이런식으로 하냐면 만일 이 것이 정말 복잡한 프로그램이라면, 변수을 맘대로 바꾸면 오류가 날 확률이 크다.
대신에 함수를 이용해 다양한 상호작용을 통해 안정적으로 값을 변경할 수 있는 것이다. (뇌피셜)

위부터 차례대로 class, private(접근 지정자), 멤버 변수, public(접근 지정자), 멤버 함수
위 class는 멤버 함수를 통해서만 접근할 수 있는 것을 알 수 있다.

인스턴스 생성 : 클래스의 멤버를 모두 가진 것이 실체화 됨.
멤버 함수를 이용하여 인스턴스를 조작할 수 있다.

nice
반응형
'c++ > 기초' 카테고리의 다른 글
| 10. 소멸자와 복사 생성자가 궁금해. (0) | 2021.11.25 |
|---|---|
| 9. 오버로딩(Overloading)이 궁금해!! (0) | 2021.11.24 |
| 7. new 와 delete(동적 배열)이 궁금해. (0) | 2021.11.24 |
| 6. 포인터, 참조자 (reference)가 궁금해 (0) | 2021.11.24 |
| 5. 전처리기, 매크로(#define)가 궁금해 (0) | 2021.11.24 |