프로그래머스 코테 연습
오늘은 개인 과제 제출 이후, 깃 특강과 cpp 보충?을 들었다.
짧게나마 팀 회의를 진행 → 5가지 기능 중 사다리타기로 기능 구현 담당자 정함 → 내일 다시 이어서 회의 진행 예정
26. 7. 28.1분 미만

오늘은 개인 과제 제출 이후, 깃 특강과 cpp 보충?을 들었다.
짧게나마 팀 회의를 진행 → 5가지 기능 중 사다리타기로 기능 구현 담당자 정함 → 내일 다시 이어서 회의 진행 예정
각 원칙을 "어떤 코드가 부족한가"를 직접 찾고 고치는 방식으로 하나씩 확인했다.
시작 코드는 damage, durability가 public이라 외부에서 아무 값이나 대입할 수 있었다 (sword.durability = -9999;처럼). 캡슐화는 클래스 내부 데이터를 외부가 함부로 건드리지 못하게 막고, 값의 유효성은 클래스 스스로 책임지는 것이다.
raw pointer 멤버를 다룰 때 복사 생성자와 이동 생성자가 잘 이해되지 않아서, 직접 코드를 짜보면서 개념을 정리했다.
char* 멤버를 가진 Book 클래스를 직접 만들어봤다.
class Book
{
char *arr;
public:
Book(const std::string &title)
{
arr = new char[title.size() + 1];
std::strcpy(arr, title.c_str());
}
~Book() { delete[] arr; }
};
new/delete 연산자에 대해서 복습하던 중, new는 Heap 메모리에 동적으로 공간을 할당하고, 그 주소를 반환하는 연산자이고, delete는 new 연산자가 동적으로 할당한 메모리를 해제하는 연산자라고만 알고 넘어갔었는데, 조금 더 깊게 생각해보기로 했다.
int* p = new int(300);을 단순히 보면 "포인터 p에 new가 반환한 int(300)의 주소를 초기화한다"로 끝난다. 조금 더 들어가 보면,
어제 만든 개념 복습 시스템을 오늘 좀 더 다듬었다.
#include <iostream>이랑 int main() {}부터 치는 게 번거로워서, main()이 필요한 문제는 시작할 때부터 그 틀이 채워져 있게 만들었다.