2026/03 9

STL

챕터 2-3 : STL 기초오늘은 STL 기초를 정리했다.처음에는 vector, map, sort, find, iterator가 한 번에 나와서 좀 많아 보였는데가만히 보면 결국 데이터를 저장하고, 찾고, 정렬하고, 순회하는 방법들이다.따로따로 외우기보다어떻게 연결해서 쓰는지 보는 게 더 중요한 것 같다.STLSTL은 Standard Template Library 이다.크게 보면컨테이너알고리즘반복자이렇게 나뉜다.컨테이너는 데이터를 담고알고리즘은 데이터를 처리하고반복자는 그 데이터에 접근하게 해준다.결국 셋이 같이 움직인다.vectorvector는 동적 배열이다.배열처럼 순서대로 저장되는데필요하면 크기를 늘릴 수 있다는 점이 제일 편하다.그래서 여러 값을 저장할 때 기본처럼 많이 쓴다.가장 많이 쓰는 건p..

C++ 2026.03.24

기본 생성자와 오버로딩

생성자(Constructor)객체가 만들어질 때 자동으로 호출되는 함수. 내가 직접 호출하기도 하고(명시적 호출), 컴파일러가 호출하기도 합니다.(암시적 호출)// 컴파일 되기 전.class Human{ // 분명 비워뒀습니다.};// 컴파일 된 후. 다음과 비슷하게 흘러갑니다.class Human{ Human() {}; // 기본 생성자가 자동으로 만들어지게 됩니다.};클래스에 생성자가 없으면 컴파일러가 시본 생성자를 자동적으로 만들어 줌.기본 생성자는 매개변수 X오버로딩같은 이름이지만 매개변수 목록은 다르게 함수를 재정의하는 것.이를 생성자 오버로딩이라고 한다.Human(); // 생성자Human(float InHeight, float InWeig..

C++ 2026.03.12

생성자와 소멸자

// Main.cppclass 클래스명{public: 멤버변수자료형 멤버변수명; 반환자료형 멤버함수명(매개변수자료형 매개변수명) {}};int main(void){ 클래스명 객체이름; return 0;}객체 지향 프로그래밍(Object-Oriented Programming, OOP)클래스(설계도)를 통해 만들어진 객체(실체, Object, Instance, 개체)간의 상호작용을 구현하기 위한 프로그래밍. ex) DNA(클래스)를 통해 사람 A(객체)와 사람 B(객체)가 태어났다(생성되었다). 사람 A가 사람 B에게 인사한다. 인사를 받은 사람 B가 사람 A에게 인사한다, … 이러한 상호작용을 구현하기 위한 프로그래밍.C++에서 객체를 생성하는 두가지 방법// Main.cpp#include class Hu..

C++ 2026.03.12

C++로 전직 시스템과 전투 시스템 구현해보기

오늘은 C++로 캐릭터 전직 시스템과 전투 시스템 구현해보려고 한다. Header.h #pragma once#include #include using namespace std;class monster;class Player {public: virtual void attack1(monster* mon) = 0; virtual void attack2() = 0; Player(string C = "unknown", int P = 20, int A = 20, int D = 25) : Class(C), HP(P), Attack(A), Defence(D) {}//플레이어가 죽었을 때 void dead() { cout getDefence(); -AttackValue; if (damage setHP(player->..

C++ 2026.03.10

Class

오늘은 C++의 Class 개념에 대해 학습했다.객체지향 프로그래밍에서 가장 기본이 되는 개념이라 정리를 해본다.1. 객체 없이 성적 관리 프로그램 만들기먼저 class 없이 성적 관리 프로그램을 만들어 볼 수 있다.예를 들어 학생의 국어, 영어, 수학 점수를 가지고 평균과 최대 점수를 구하는 프로그램이다.double getAvg(int kor, int eng, int math){ return (kor + eng + math ) / 3.0f;}int maxNum(int num1, int num2){ if(num1 >= num2) return num1; else return num2;}int getMax(int kor, int eng, int math){ return maxNum( ma..

C++ 2026.03.09

동적할당

코드 섹션과 데이터 섹션 코드 섹션 : 우리가 작성한 소스코드들이 빌드된 결과물들이 저장되는 곳데이터 섹션 : 전역 변수와 정적 변수 등이 저장되는 곳스택메모리의 단점 1. 스택메모리에 저장되는 지역변수의 크기는 컴파일때 고정된다. 런타임 때 늘리거나 줄일 수 없다.2. 함수가 종료되면 종료된 함수 스택 프레임에 접근이 불가능하다. 즉, 함수 안에 지역변수는 함수가 종료될 시 같이 사라진다.3. 지역변수가 사라지는 걸 막기위해 전역변수 혹은 정적변수로 선언해야 하지만 그건 또 너무 그것대로 과분하다.스택 메모리의 단점을 없앨 힙 메모리에 대해 프로그래머가 관리할 수 있는 동적 할당 영역이다.엄연히 스택 메모리와는 다르다.프로그래머가 원하는 만큼 원하는 때에 할당 및 반납이 가능하다.무적은 아닌 힙 메..

C 2026.03.06

포인터

기존에 배웠던 변수들과 다르게 포인터는 특정 정수를 가리키는 메모리 주소를 저장한다. 하나의 변수를 다른 변수에 대입하면 새로운 메모리 공간에 동일한 값이 복제된다.따라서 복사 이후에 두 변수는 서로 독립적인 공간을 가지므로, 한 쪽 값을 변경해도 다른 쪽에는 영향이 없다. 하지만, A = B의 의미는 B에 있는 값을 A에 복사하는 것이므로 복사를 할때에는 복사 비용이 든다.변수가 많아지고 크기가 커지면 복사 비용이 부담된다. 이러한 복사 비용을 줄이기위해 값을 직접 복사하는 방식 대신 변수의 주소를 가리켜서 동일한 데이터에 접근한다.이것이 포인터다.포인터의 모든 연산은 주소값과 관련이 있다. 1. 변수의 주소값을 담을 수 있다.2. 담고 있는 주소값에 해당되는 메모리에 있는 값을 읽거나 수정할 수 있다..

C++ 2026.03.05

C++로 인터페이스 상태창 구현해보기

int main(void){ int status[5] = { 0, 0, 0, 0, 1 }; status 배열의 마지막 배열이 0이 아니라 1로 초기화 한 이유는 레벨은 0부터 시작하는 것이 아닌 1부터 시작하기 때문에 1로 초기화 했다. //입력검사 while (status[0] > status[0]; } cout > status[1]; while (status[1] > status[1]; } cout > status[2]; while (status[2] > status[2]; } cout > status[3]; while (status[3] > status[3]; } 들어온 값이 HP와 MP는 50 이하, 공격력과 방어력은 0 이하 일시 While문을 통해 다시 입력하라는 문구를 띄우게 만들었다. /..

C++ 2026.03.04