[C++] OOP(객체지향)의 특성 - Class와 Struct의 차이점
Language/C++2022. 6. 6. 18:12[C++] OOP(객체지향)의 특성 - Class와 Struct의 차이점

Introduce Class와 Struct의 차이점을 알고 static 변수, static 함수의 개념을 숙지합니다. struct는 기본 접근 지정자가 public이고, class는 private이다. struct는 그냥 구조체(데이터 묶음)을 표현하는 정도 class는 객체 지향 프로그래밍의 특징을 나타내는 용도 static 변수 우리가 마린이라는 객체를 만든다고 했을때, 물론 처음 만들어지는 마린의 hp는 모두 동일하겠지만 데미지를 입거나 전투 과정에서 hp의 변화로 인해 모든 마린의 hp가 동일하지는 않습니다. 그에 반해 hp가 변했다고해서 마린의 고유한 attack수치는 변하지 않습니다. 즉, 모든 객체에대해 s_attack이라는 변수는 모두 같은 값을 가지고 있습니다. 모든 객체의 모든 s_at..

[C++] OOP(객체지향)의 특성 - 연산자 오버로딩
Language/C++2022. 6. 6. 17:07[C++] OOP(객체지향)의 특성 - 연산자 오버로딩

Introduce 임의의 클래스끼리 연산을 할 수 있을까요? 평소 하는대로 class끼리 덧셈을 한 결과입니다. #include using namespace std; class Position{ public: int _x; int _y; }; int main(){ Position pos1; pos1._x = 0; pos1._y = 0; Position pos2; pos2._x = 1; pos2._y = 1; Position pos3; pos3 = pos1 + pos2;// 컴파일 에러 return 0; } 위에서 처럼 피연산자의 형식(type)이 Position이고 이와 일치하는 +연산자가 없다는 에러를 보이고 있습니다. 이번 시간의 목표는 새로운 연산자 type끼리 작용을 할 수있게 만들어주는 것입니다..

[C++] OOP(객체지향)의 특성 - 멤버변수 초기화
Language/C++2022. 6. 6. 16:18[C++] OOP(객체지향)의 특성 - 멤버변수 초기화

Introduce 멤버 변수를 초기화하는 방법에 대해 알아봅니다. 변수 초기화를 하지 않으면 다음과 같이 변수에 가비지값이 들어갈 수 있습니다. #include using namespace std; class Player { public: int _hp; }; int main() { Player p; cout

[C++] OOP(객체지향)의 특성 - 다형성(polymorphism)
Language/C++2022. 6. 6. 15:00[C++] OOP(객체지향)의 특성 - 다형성(polymorphism)

Introduce 객체 지향 프로그래밍의 주요 특성 중 하나인 다형성(polymorphism)에 대한 개념을 이해한다. 다형성 다형성(polymorphism)은 여러가지 형태를 갖는 성질을 말한다. 함수의 기능적 다형성과 상속에 의해 만들어진 계층 관계를 활용하는 기술이다. 오버로딩 오버로딩은 같은 이름의 함수에 매개변수를 다르게 사용하여 매개 변수에 따라 다른 함수가 실행되는 것 입니다. 오버로딩 규칙 메소드 이름이 같아야 한다. 리턴형이 같아도 되고 달라도 된다. 파라미터 개수가 달라야한다. 파라미터 개수가 같을 경우, 자료형이 달라야 한다. class Knight { public: int _hp; int _attack; int _posX; int _posY; public: // 기본 생성자. Kni..

[C++] OOP(객체지향)의 특성 - 캡슐화(encapsulation)
Language/C++2022. 6. 6. 11:27[C++] OOP(객체지향)의 특성 - 캡슐화(encapsulation)

Introduce 객체 지향 프로그래밍의 주요 특성 중 하나인 캡슐화(은닉성)에 대한 개념을 이해한다. 캡슐화의 특징 1 실제 구현 내용 일부를 내부에 감추어 은닉한다. 내부에 감추는 방법으로는 접근지정자를 두어 은닉의 정도를 기술하여 구현합니다. 은닉의 정도를 접근지정자로 기술하고 해당 영역에 들어가는 속성이나 메서드를 제한하면 됩니다. C++에서 접근지정자 private : 자기 클래스 내부의 메서드에서만 접근 허용 protected : 자기 클래스 내부 또는 상속받은 자식 클래스에서 접근 허용 public : 모든 접근을 허용 #include using namespace std; class Car { public: void MoveHandle() {} void PushPedal() {} void O..

[C++] OOP(객체지향)의 특성 - 상속성(inheritance)
Language/C++2022. 6. 6. 10:43[C++] OOP(객체지향)의 특성 - 상속성(inheritance)

Introduce 객체 지향 프로그래밍의 주요 특성 중 하나인 상속성에 대한 개념을 이해한다. 클래스 리뷰 #include using namespace std; class Player{ public: Player(){ _hp = 0; _attack = 0; _defence = 0; cout

[C++] OOP(객체지향)의 개념
Language/C++2022. 6. 6. 00:00[C++] OOP(객체지향)의 개념

Introduce OOP(Object-oriented programming)의 개념을 이해하고 객체, 상속자, 소멸자의 개념을 학습합니다. class는 일종의 설계도와 같은 역할을 합니다. C에서 struct(구조체)와 거의 동일한 개념인데, 설계도에 필요한 멤버 변수와 멤버 함수들을 미리 정의해놓고, 필요에 따라 설계도를 바탕으로 객체(Object)를 만들어 사용합니다. #include using namespace std; class Knight { public:// 접근 지정자 int _hp;// 멤버 변수 int _attack; int _posX; int _posY; public: void Move(int x, int y);// 멤버 함수 void Attack(); void Die() { _hp =..

[C++] 참조
Language/C++2022. 6. 5. 12:44[C++] 참조

Introduce 참조의 개념과 참조와 포인터의 차이점을 알아보자. 참조는 값 전달 방식과 주소 전달 방식의 중간점 주소 전달 방식 void CreateMonster(Statinfo *info) { info->hp = 100; info->attack = 8; info->defence = 2; } void PrintinfoByPtr(Statinfo *info) { cout

[C++] 포인터 실습
Language/C++2022. 6. 5. 12:11[C++] 포인터 실습

Introduce Struct(구조체)를 이용해 포인터를 사용했을때와 사용하지 않았을때의 차이점을 살펴본다. [구조체 선언] #include using namespace std; struct Statinfo { int hp; // 4바이트 변수 3개 == 12바이트 짜리 구조체 int attack; int defence; }; [포인터를 사용하지 않은 경우] Statinfo CreatePlayer() { Statinfo ret; cout 생각보다 복잡하죠? [포인터를 사용한 경우] void CreateMonster(Statinfo *info) { cout attack = 10; info->defence = 2; } int main() { Statinfo monster; monster.hp = 0; mon..

[C++] 포인터
Language/C++2022. 6. 5. 11:22[C++] 포인터

Introduce 지금까지 했던 방식 int x = 1; - x라는 이름의 4byte 정수 타입의 바구니를 만들고, x라는 변수를 스택 메로리에 할당했다. 즉, x바구니에 1이라는 숫자를 넣으라는 의미 - 스택 메모리에 있는 특정 주소(x바구니)에 우리가 원하는 값을 넣는 셈. - x를 비유하자면 메모리에 이름을 붙인 것이다. - call by value에 의한 계속되는 복사의 문제 [원본을 직접 안건드리고 복사를 해서 건드린다.] [한계점] : 원본 수정이 필요할때 ... >> 포인터의 사용 포인터의 개념 - 바구니는 바구니인데 [주소]를 저장하는 바구니이다. - 변수를 선언할때 *가 등장했다. >> 주소 int *ip = &x; 근데.. 남의 주소를 갖고 뭘 할까 ? - [주소를 저장하는 바구니]가 ..

image