본문 바로가기

c++9

[Kotlin 뿌시기](2) Null 이번에 다뤄볼 주제는 Null이다. Null이란 값이 존재하지 않음을 나타내는 특별한 상태이다. 말이 좀 어려운데 ㅋㅋㅋㅋ 사실 0아닌가 ?라는 생각이 드는데 0은 정확히 type이 정수형인 0이라는 숫자니까 또 그거는 아닌거같긴하다. 그리고 Null들의 가장 큰 특징은 사칙 연산이 불가능 하다는 점이다. 다른 언어에서는 Null이 포함된 변수를 다루는 과정에서 발생하는 오류로 인해 코드가 취약해질 수 있고, 이로 인한 버그를 방지하고 안전성을 높이기 위해 Kotlin은 Null Safety라는 방안을 도입했다고 한다. 얘가 뭔지는 슬슬 알아보자. 우선 변수는 Nullable과 Non-Nullable Type이 있는데, 말 그대로 Null이 될 수 있는 것과 없는 Type으로 나뉜다고 생각하면 된다. -.. 2023. 12. 24.
[C++ Design Pattern] Visitor Visitor 패턴 1 . 반복자(iteration) : 복합 객체의 모든 요소를 동일한 방식으로 열거 2 . 방문자(visitor) : 복합 객체의 모든 요소를 동일한 방식으로 연산 수행 아파트 단지에 방 100개가 있다고 하자 , 얘가 반복자이다. 가스 검침을 수행하는 가스 검침원 (Visitor1) 가전 제품을 설치해주는 설치 기사 (Visitor2) ~~~ 기능을 하는 ~~~~~~~~~~사람 (VisitorX) 이렇게 기능을 수행하는 역할들을 하나의 Class로 만들어 버리는 것이다. #include #include #include template struct IVisitor { virtual void visit(T& e) = 0; virtual ~IVisitor(){} }; template cl.. 2023. 12. 1.
[C++] Iterator Iterator(반복자) ?? - 복합 객체의 내부 구조를 노출하지 않고 , 동일한 방법으로 순차적으로 이동할 수 있는 방법을 제공 #include #include #include int main() { std::list s = { 1,2,3,4,5 }; std::vector v = { 1,2,3,4,5 }; auto p1 = s.begin(); auto p2 = v.begin(); while (p1 != s.end()) { std::cout 2023. 12. 1.
[C++ Design patter] Factory. 우선 코드부터 보자. #include #include #include #include "Helper.h" class Shape { public: virtual void draw() = 0; virtual ~Shape() {} virtual Shape* clone() = 0; }; class Rect : public Shape { public: void draw() override { std::cout cmd; if (cmd >= 1 && cmd draw(); } } } } 객체들의 생성을 담당하는 Factory를 만든다. 공장에서 물건을 찍어내는 것이랑 비슷하다. 자동차 공장같은데서 "견본품 하나 주시면, 제가 똑같이 찍어 드리겠습니다" 이런느낌이다. Shape는 draw()와 clone() 순수 가상 .. 2023. 11. 30.