다짐하자/개발자가 되자.

[22.03.08 ~ 22.04.05 원혁희 강사님] C++ 강의를 마치고.

giggs 2022. 4. 14. 12:14

 

▣ C++ 강의를 들으려고 한 이유

 

  • 국비교육 시작 전 한 달의 준비 시간
  • java 인강 공부 중 떨어진 텐션을 UP 시켜줄 자극 필요 
  • 객체 지향 언어의 기원이라는 C++ 궁금증

 

 


 

 

 

▣ 얻고자 했던 점

 

  • C++ 언어를 통해 java를 이해하고 배우는데 도움이 되도록 하고 싶었다.
  • C++ 알고리즘 기초 문제를 풀 수 있는 실력 갖추고 싶었다.
  • C++ 만의 기능이나 문법들을 배우고 싶었다.

 

 

 


 

 

▣ 힘들었던 점

 

  • 생각보다 더디게 진행된 진도 
  • 포인터 부분과 메모리 상의 로직 개념 
  • 복습의 방법으로 블로그 포스팅을 선택했는데 이해한 것을 글로 정리하려니 힘들었다.

 

 

 

 

 


 

 

 

▣ 강의를 통해서 얻은 점

 

 

 

1. 메모리 관점에서 변수나 함수가 어떻게 작동되는지 메커니즘을 알 수 있었다.

  • 변수나 함수에 대해서 어떤 기능이 있고, 어떤 상황에서 사용하는지에서만 배우고 관심이 있었는데
  • 메모리상에서 어떻게 작동되는지 로직과 개념을 알 수 있었다.
  • 함수의 호출 비용이 크다는 것 확인한 부분이 기억에 남는다.

 

 

 

 

 

2. C++만의 문법과 기능들을 배웠다.

 

#include < > #include " " int main( ) { return 0 } cout << endl; cin >>
namespace 포인터형,포인터연산자 참조형 생성자초기화리스트 네임맹글링
복사생성자 파일분할 :: inline함수 class B :: public A
업캐스팅,다운캐스팅 다중상속 가상함수 순수가상함수 연산자오버로딩

 

## 보고 설명 못하겠으면 포스팅한 글 다시 복습하기!  

 

 

 

 

 

3. 다른 언어를 배운다는 두려움 극복

 

  • java만 공부하기에도 아직 실력이 부족하다는 생각을 가지고 있었다.
  • 여기에 새로운 언어인 C++을 잘 받아들일 수 있을까 걱정이 컸었다.
  • 이 걱정은 오래가지 않았다.
  • 막상 C++강의를 시작해보니 java를 공부하며 봤던 개념과 로직들이 거의 동일했다.
  • 변수나 함수를 써주는 java와 다른 부분들만 체크해나가며 수월하게 배울 수 있었다.
  • 오히려 java에서 애매하게 이해했던 내용이나 생각하지 못하고 썼던 부분들을
  • C++강의를 들으며 이해하게 되었다.
  • 기존에는 함수의 이름이나 기능에 집중하여 사용하였는데,
  • 이제는 메모리 부분까지도 어떻게 되는지 생각할 수 있게 되었다.
  • 생각의 범위가 넓어졌다.

 

 

 

 


 

 

 

 

▣ 강의를 마친 소감

 

 

 

새로운 언어를 배운다는 부담감과 걱정이 있었는데, 이런 생각을 깨는 좋은 시간이었다.

한 가지 언어를 깊게 잘 배워놓으면 다른 언어를 배우는데 큰 문제가 없다는 것을 직접 확인한 시간이었다.

아직 깊게 배운 것은 아니지만ㅎㅎ java를 더 열심히 공부하면 되겠다는 확신과 의지가 UP 된 시간이었다.

 

 

 

C++의 매력이 있었다.

java 언어보다 자유로움? 이 느껴졌다. 

코드들도 더 간결하게 사용할 수 있는 것도 많았으며, 같은 함수명을 사용하거나 다중 상속도 가능했다.

주소 값을 저장할 수 있는 데이터 타입인 포인터형이 제일 큰 매력이었다. 제일 어렵기도 하지만..

주소 값을 가지고 전달하고 받고, 그 주소 값의 공간을 포인터 연산자로 접근하는 매.. 매력?ㅎㅎ

C++을 안 배우고 java로 공부를 시작한 나와 같은 분들께도 추천해주고 싶은 언어였다.

C++을 배우며 오히려 java에서 이해가 안 됐던 부분이나 생각하지 못했던 부분들을 생각할 수 있게 되었기 때문이다.

 

 

 

시간 활용의 아쉬움

강의는 월-금요일 09:00 ~ 12:00 진행되었는데, 강의로 오전 공부시간을 다 사용하고

복습의 방법으로 블로그 포스팅을 선택했는데, 이해한 내용을 글로 정리해서 써 내려가는 작업이 쉽지 않았다.

강의를 듣느라 오전 공부시간을 사용하고, 블로그 포스팅으로 시간을 또 사용해버리니 절대적인 공부시간이 줄어들었던 점은 아쉬웠다.

 

 

 

그럼에도 블로그 포스팅을 포기할 수 없었다. 

언어를 배우며 가장 중요한 것은 복습이라고 생각했는데,

나만의 과제 느낌으로 블로그 포스팅을 하지 않았다면 이만큼 다시 복습하지 않았을 것 같다.

이해한 내용이라도 생각이 아닌 글로 정리하려고 하니까 몇 번이고 다시 보게 되고,

그 과정 속에서 생각하지 못했던 내용이나, 이해했다고 착각했던 부분들을 알 수 있던 점

이 점이 내가 복습으로 블로그 포스팅을 선택한 이유 중 하나이다.

이해하지 못했던 내용들에 대해서는 시간을 더 많이 투자해야 했지만 효과는 확실했다. ㅎㅎ

 

 

 

 비대면 수업으로 인한 아쉬움

코로나로 인해서 비대면 수업으로 ZOOM을 통해서 진행되었다.

대면 수업을 하며 수업 듣는 분들과 인사도 하고 같이 공부하며

개발자가 되겠다는 같은 꿈을 가지고 있는 분들과 커뮤니티를 형성하고 싶었는데 아쉬웠다.

비전공자인 현재 나의 개발자 인맥은.. 개발자 친동생과 구글, 커뮤니티뿐.. 흑

 

 

 

 

 

짧았던 한 달의 시간과 컸던 욕심으로 인해 아쉬움이 많은 것 같다.ㅎㅎ

새로운 언어의 문법들과 기능들을 배우며 새롭기도 하고 흥미로웠다.

 

 

 

 

 

 

 


 

 

커닝 페이퍼 :

포인터형(+포인터 연산자), 참조형 : 주소 값( & )을 저장하는 dataType

생성자 초기화 리스트: 메모리 할당과 동시에 값을 입력하는 방법

네임 맹글링 - 오버 로딩, 같은 함수명을 사용 가능 (단, 매개변수의 타입형과 개수가 다를 경우) 

파일 분할 - 선언부(헤더 파일)와 구현부(cpp파일) 

누구의 함수인지 :: 함수

class B : public A - 부모의 속성을 어떤 형식으로 물려받을 것이냐

업 캐스팅 다운 캐스팅 - A& refb = b;  또는 A* pb = &b;

다중 상속 지원 - :: 누구의 것이라는 것 표현 - 모호함 해결

가상 함수 - virtual - ( A& ref ) - 작동되는 원리 메모리상으로 체크한 부분 좋았다.

순수 가상 함수 virtual void add( ) = 0; - 구현부는 X - 추상 클래스

연산자 오버 로딩 - operator