2026-03-05(목)

조범근·2026년 3월 5일

TIL

목록 보기
10/25
post-thumbnail

글로 배운 것과 직접 구르는게 다르다고 하지만.. 이건 너무하다. 글로 배울때도 어찌저찌 검색하면서 겨우겨우 이해하면서 넘어갔는데 실제로 마주하고 코드를 치려고 하니까 구조도 생각이 안나서 너무 당황스러웠다. 레전드로 어려움

구현과 Q&A

Q1. 짝수의 합을 구하는 문제, 최적화 어떻게 할까?

이건 내가 처음구현할때 일단 구현만 해보자 해서 만든 것 이였다.

반복문을 그냥 반복만 해주는 기계라고 생각해버렸던 탓에 반복문으로 값을 증가시킨다는 생각을 미쳐 못했다. 더 최적화 하는 방법이 있었다

Q2. insert 와 append 함수

append("World")는 문자열 뒤에 추가해주고
insert(5, " World")는 5번째 문자 뒤인 6번째 문자부터 World를 추가해주는것임

Q3. 왜 파생 클래스에서 꼭 뒤에 부모 클래스의 생성자를 호출할까요??

A. 부모의 변수가 private에 있다면 자식 클래스도 값을 수정 할 수 없음. 따라서 부모의 변수를 초기화할 수 있는 유일한 통로인 '부모의 생성자'를 빌려 써야함.
그 뒤에 또 많은 이유가 있는데 모르면 외워

클래스


(변수명) : (자료형)
빨간색 네모 gcd는 privated에 넣어 달라는거임.
또 헷갈린게 두개가 있는데

Q4. 생성자 오버로딩이 뭔가요..

Fraction() <<< 얘가 생성자임

1. 클래스의 객체 생성 시에 private 멤버를 자동으로 초기화한다.
2. 객체 생성시에 딱 한번 호출된다.

근데 설계도에는 Fraction(), Fraction(int num, int denom)이 두개가 있음
그건 바로 매개변수를 입력받지 않은 생성자는 Fraction()으로, 매개변수를 입력 받았으면 Fraction(int num, int denom)으로 가라는거임.

Q5. 초기화 리스트가 왜필요한데요..

클래스(int num, int denom) : numerator(num), denominator(denom) {}
일때 : 뒤에가 초기화 리스트임. 즉, 메모리에 객체가 올라갈 때 privated에 있는 변수를 계속 초기화 해준다. 이걸 하지 않으면 상속된 파생 클래스가 호출될때 부모 클래스에 계속 쓰레기 값이 들어가서 방치 될 수 있어, 안전 장치이다.

Q6. 객체. 함수 <- 이 구조가 도대체 머임

결국에는 클래스가 변수를 내 마음대로 받기 위한 사기적인 자료형 이라는 느낌을 받았다.
일반 자료형 : int a = 10;
클래스 객체 : Fraction f(1, 2);

fraction f(1,2);였으니까 f.simplify();에는 (1,2)의 값을 fraction에 있는 simplify();라는 함수에 넣어라 라는거다.

Q7. 공부하다가 갑자기 함수 뒤에 const가 붙어있어요 이가 잘못 적은거 아닌가요?

Fraction Battery() const {} 이런 메소드(멤버 함수)가 나와서 좀 당황했는데 멤버 변수를 수정하지 않고 값만 리턴 해 주는 "읽기 전용" 함수를 이렇게 표현함

0개의 댓글