2026-03-04(수)

조범근·2026년 3월 4일

TIL

목록 보기
9/25

코딩을 하다보면, 한번 사용하고 버려질 변수, 값들 또는 행동이 중복되는 코드들을 볼때마다 불편해 미쳐버릴 것 같았다. 사실 최적화라는게 와닿지않았다. 그래서 "당장은 크기가 큰 프로그램을 코딩하는 것도 아니고, 나도 체감을 못하지만 컴퓨터는 체감을 하겠지." 라고 생각을 하기로 했다. 불편한걸 편하게 만들면 쾌감을 느끼는 타입이라 그냥 바람직한 코드를 분별하고 있었을 뿐인데, 객체지향 프로그래밍이라는 것에 다가가는 코딩이였다. 그래도 체감은 안됨;

구현한 것

숫자로 하는 RPG가 과제여서 구현했다.
여기서 궁금했던 것들은

Q. null과 nullptr의 차이점은 뭔가요?

A. null은 0으로 찍히는 경우도 있음. 그래서 대부분의 경우 nullptr 사용을 권한다고함.

Q. pointer *와 Reference &의 차이점

A.
1. 레퍼런스는 초기화 이후에 다른 대상에 재 연결할 수 없음.
2. NULL을 못씀;

Q. std::endl;과 \n 차이가 뭔가요? 뭘 권장하나요?

A. 결론부터 말하면 \n이 더 효율적임. 그 이유는 일단 버퍼(Buffer)가 무엇인지 알아야함
버퍼(Buffer)는 컴퓨터에서 데이터 전송 속도 차이를 완화하기 위해 데이터를 일시적으로 저장하는 메모리 영역이다. 택배로 예를 들자면,

버퍼가 있을 때 : 집 앞에 커다란 상자(버퍼)를 두고, 물건이 꽉 찰 때까지 기다렸다가 한꺼번에 가져감 (효율적)

버퍼가 없을 때 : 물건이 하나 생길 때마다 택배 기사가 집을 방문해서 물건을 하나씩 배송(매우 비효율)

즉 std::endl은 운반 상자에 택배가 다 차지도 않았는데 기사를 불러서 억지로 가져가게 만드는 행위이다. 따라서 성능이 중요한 프로그램에서는 반드시 \n을 사용하여 버퍼가 자연스럽게 비워지도록 유도하는게 좋다고함.
std::endl;을 그래서 왜 쓰냐 !! 나도 모름, 일단 뭔가 끝나는 느낌을 줘서 쓰는 중

C++ 궁금했던 것

결국에는 유지보수 = 객체지향적으로 어떻게 하면 잘 구현을 할까? 가 최종 과제 인것 같다.

클래스

오늘 클래스를 한번 더 복습하면서 궁금한게 생겼다

Q. 왜 굳이 student.함수를 하는걸까요?

A. 쉽게 student 클래스에 접근해서 값을 받기 위해서 이다. 만약 main에서 student.setvalue(매개변수1, 매개변수2) 이렇게 값을 받다간 많아지면 귀찮아짐

Q. main이 진행되는 동안 Class의 변수도 저장되어 있나요

A. 함수 실행과는 다르게 Person p;라고 선언을 해두는 순간 메모리에는 공간이 생김. main 함수의 중괄호가 닫히기 전까지는 사라지지않음.(Stack)

String 자료형

Q. string과 char의 관계

string의 문자열 자료형에는 일단 ""을 사용함. string 변수.length()하면 string의 크기를 알 수 있음. 이게 어떻게 되는것이냐?
string은 char의 배열이다. 전체(phone_number)는 string이지만 배열 하나는 무조건 char임. 그래서 char 값을 입력 할때 쓰는 ' ' 만 가능함

0개의 댓글