1.무엇을 하는 과제인가?

: 다형성(polymorphism), 연산자 오버로딩(operator overloading), Canonical 클래스 양식(Orthodox Canocical class form)등을 하는 과제이다.




2.과제를 하면서 참고 했던 곳들

1)복사 생성자, 복사 대입연산자

: 복사 생성자와 복사 대입연산자가 무엇인지와 둘의 차이점을 알 수 있는 곳

링크 : https://coding-factory.tistory.com/701
링크2 : https://link2me.tistory.com/1755

2)연산자 오버로드

: <<를 오버로딩 하는 것, 연산자 오버로딩에 대해서 모른다면 한번쯤 보면 좋다.

링크 : https://learn.microsoft.com/ko-kr/cpp/standard-library/overloading-the-output-operator-for-your-own-classes?view=msvc-170





3.과제를 하면서 공부했던 것들

0)vscode extension

: 여기서부터 class의 양식에 4가지가 무조건 들어가야 한다. 매번 만들기가 너무 힘드니 extension을 깔아주는 것이 좋다.
• 기본 생성자
• 복사 생성자
• 복사 할당 연산자
• 소멸자

vscode의 extension에서 canonical을 치면 아래와 같이 나오고 사용을 하면 된다. 단축키등은 details에 있으니 참고하면 된다. 사용을 하게 되면 class와 cpp파일이 만들어진다.

1)ex00

: 부동소수점을 공부하는 문제 같지만 사실은 복사 연산자와 복사 대입 연산자를 공부하는 문제이다.(물론 부동소수점도 무조건 공부해야 문제를 풀 수 있다.)



2)ex01

: 여기서는 함수의 오버로딩에 대해서 공부를 하게 된다.

  • C에서는 같은 이름의 함수가 있다는 것은 말이 안되었지만 cpp에서는 가능하다. 들어가는 argument의 type을 다르게 하면 자동으로 오버로딩이 되어 그쪽으로 가게 되어있다.



3)ex02

: operator 연산자를 만드는 것에 대해서 공부를 하게 된다.

  • 이게 무엇일까? 예를 들어 +를 당연히 우리는 숫자와 숫자를 더하는데 사용한다. 그런데 클래스와 클래스를 +로 하는 설정을 해준다면 어떻게 될까? 우리가 원하는 대로 특정 변수와 특정 변수를 더하는 것도 해줄 수 있고, 하고 싶은대로 입맛대로 사용할 수가 있다.
    +가 들어오면 어떤 일을 하라고 정의를 해준다고 생각하면 된다.
  • 전위연산자와 후위 연산자에 대해서도 구현을 해야되는데 둘은 비슷해보이지만 상당한 차이를 보인다. 아래의 링크를 참고하자.
    링크 : https://sexycoder.tistory.com/m/11




4.회고

1)처음보는 구조들이 많았다.

: 복사 생성자, 복사 대입 연산자, 연산자 오버로딩 등 생소하고 구조도 익숙하지 않은 대상들이 많았다. 익숙해지는 시간이라고 생각하고 여러번 접하다 보니 조금은 친숙해진 느낌이다.

2)부동소수점

: 부동 소수점을 제대로 알아 본적이 없었는데, 이번을 계기로 컴퓨터가 정확하지 않은 연산을 할 수도 있다는 것을 알게 되었다. 특히나 코인의 경우에는 이를 방지하기 위하여 단위자체를 다르게 쓰는 것을 왜 그렇게 쓰는지에 대해서 알게 되었다.
(비트코인의 경우 사토시가 존재한다) 한번쯤은 알고 지나갔어야 했는데 이번을 통해서 알게 되어서 좋다고 생각한다. 가끔 까먹을 때마다 다시 한번 복습해야겠다.

3)전위연산자, 후위연산자

: 사실 이게 아직도 조금은 헷갈린다. 볼때마다 이해는 가지만 둘은 상당한 차이가 있다는 것을 알게 되었다. 향후에 과제를 할때도 해당되는 부분이 나올 것이라고 생각된다.

profile
세상을 이롭게 하는 프로그램 만들기

0개의 댓글

관련 채용 정보