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개의 댓글