본문 바로가기

프로그래밍/C & C++92

[C++] static 키워드 (+ extern) References Professional C++ https://en.cppreference.com/w/ Contents static 키워드 용도 extern 키워드 non-local 변수의 초기화(소멸) 순서 C++ 코드에서 static 키워드의 용도는 다양하며, 얼핏보면 그 용도들간에는 전혀 관련이 없어 보입니다. 이렇게 키워드를 다양한 곳에서 사용하도록 '오버로딩'한 것은 C++언어에서 키워드가 늘어나는 것을 피하기 위해서 입니다. 이번 포스팅에서는 다양한 static 키워드의 용도에 대해서 알아보겠습니다. static Data Member and Methods 먼저 클래스의 데이터 멤버와 메소드를 static으로 선언할 수 있습니다. static으로 선언한 데이터 멤버는 non-static 데이터.. 2022. 2. 18.
[C++] 캐스팅(Casting) References Professional C++ https://en.cppreference.com/w/ Contents const_cast() static_cast() reinterpret_cast() dynamic_cast() std::bit_cast() C++에서는 어떤 타입을 다른 타입으로 캐스팅하기 위한, const_cast(), static_cast(), reinterpret_cast(), dynamic_cast() 와 C++20에서부터 지원하는 std::bit_cast() 라는 5가지의 캐스팅 방법을 제공합니다. (int)myFloat와 같은 C 스타일의 캐스팅도 C++에서 계속 지원하고 있으며 현재까지도 여러 코드에서 많이 사용하고 있습니다. C 스타일 캐스팅 방법은 C++의 캐스팅 기능을.. 2022. 2. 17.
[C++] 클래스(Class) 상속 (3) - 다양한 이슈들 References Professional C++ https://en.cppreference.com/w/ Contents 상속과 관련된 여러가지 이슈들 RTTI (Run-Time Type Information) typeid Virtual Base Classes [C++] 클래스(Class) 기본편 [C++] 클래스(Class) 심화편 (1) [C++] 클래스(Class) 심화편 (2) [C++] 클래스(Class) 심화편 (3) [C++] 클래스(Class) 상속 (1) - 확장, 재사용 [C++] 클래스(Class) 상속 (2) - 다형성, 다중 상속 이전 포스팅에 이어 계속해서 클래스의 상속, 상속에 관련된 여러가지 이슈들에 대해 알아보도록 하겠습니다! 6. 상속과 관련된 여러가지 이슈들 클래스를 확.. 2022. 2. 16.
[C++] 클래스(Class) 상속 (2) - 다형성, 다중 상속 References Professional C++ Contents 다형성을 위한 상속 순수 가상 메소드, 추상 클래스 다중 상속 [C++] 클래스(Class) 기본편 [C++] 클래스(Class) 심화편 (1) [C++] 클래스(Class) 심화편 (2) [C++] 클래스(Class) 심화편 (3) [C++] 클래스(Class) 상속 (1) - 확장, 재사용 이전 포스팅에 이어 계속해서 클래스의 상속에 대해 알아보도록 하겠습니다! 4. 다형성을 위한 상속 이전 포스팅에서 파생 클래스와 부모 클래스의 관계에 대해서 알아봤고, 이번 포스팅에서는 상속의 가장 강력한 기능인 다형성을 살펴보도록 하겠습니다. 4.1 Spreadsheet 예제 지난 포스팅들을 통해 클래스에 대해 알아보면서 스프레드시트 어플리케이션 .. 2022. 2. 15.
[C++] 클래스(Class) 상속 (1) - 확장, 재사용 References Professional C++ Contents 상속(inheritance) override 키워드 virtual 키워드 재사용(reuse)를 위한 상속 이전 포스팅들을 통해 클래스에 대해 자세히 살펴봤습니다. [C++] 클래스(Class) 기본편 [C++] 클래스(Class) 심화편 (1) [C++] 클래스(Class) 심화편 (2) [C++] 클래스(Class) 심화편 (3) 하지만, 클래스에 상속(inheritance)이 없다면 구조체에 동작만 추가한 것에 불과합니다. 클래스 자체만으로 절차형 언어를 뛰어넘는 굉장한 향상이지만, 상속은 완전히 새로운 차원의 것입니다. 상속을 통해 기존에 정의된 클래스를 바탕으로 새로운 클래스를 정의할 수 있습니다. 이 방법으로 클래스를 재사용하거나.. 2022. 2. 14.
[C++] 클래스(Class) 심화편 (3) References Professional C++ https://en.cppreference.com/w/ Contents 연산자 오버로딩 Pimpl Idiom or Bridge Pattern 클래스 심화편 세 번째 포스팅입니다 ! [C++] 클래스(Class) 기본편 [C++] 클래스(Class) 심화편 (1) [C++] 클래스(Class) 심화편 (2) 이번 포스팅에서는 연산자 오버로딩과 C++ 디자인을 고려하여 안정적인 인터페이스를 만드는 방법에 대해서 알아보도록 하겠습니다 ! 7. 연산자 오버로딩 객체끼리 더하거나, 비교하거나, 파일에 객체를 스트림으로 전달하거나 반대로 가져오는 등의 객체에 대한 연산을 수행할 때가 많습니다. 예를 들면, 스프레드시트 어플리케이션을 유용하게 사용할 수 있도록 행 전.. 2022. 2. 13.
[C++] 클래스(Class) 심화편 (2) References Professional C++ https://en.cppreference.com/w/ Contents 메소드의 종류 (static, const, overloading, inline) 데이터 멤버의 종류 중첩 클래스, 클래스 내부의 열거 타입 클래스 심화편 두 번째 포스팅입니다 ! 이전 포스팅에서는 주로 클래스에서의 move semantic(이동 의미론)과 관련된 내용들을 살펴봤습니다. [C++] 클래스(Class) 기본편 [C++] 클래스(Class) 심화편 (1) 이번 포스팅에서는 클래스의 메소드, 데이터 멤버, 연산자 오버로딩과 관련하여 자세하게 알아보도록 하겠습니다 ! 3. 메소드의 종류 3.1 static 메소드 메소드도 데이터 멤버처럼 특정 객체 단위가 아닌 클래스 단위로 적.. 2022. 2. 12.
[C++] 클래스(Class) 심화편 (1) References Professional C++ https://en.cppreference.com/w/ Contents friend 객체 동적 할당 이동 생성자, 이동 대입 연산자 우측값 레퍼런스, Move Semantics 구현 std::exchange Rule of Zero [C++] 클래스(Class) 기본편 지난 포스팅에서 클래스와 객체에 대해서 살펴봤습니다. 이번 포스팅에서는 클래스와 객체를 최대한 활용할 수 있는 세부사항들을 완벽히 살펴보도록 하겠습니다. 1. friend C++은 클래스 안에서 다른 클래스나 다른 클래스의 멤버 함수 또는 비멤버(non-member) 함수를 friend로 선언하는 기능을 제공합니다. friend로 지정한 대상은 이 클래스의 protected나 private .. 2022. 2. 11.
[C++] 클래스(Class) 기본편 References Professional C++ https://en.cppreference.com/w/ Contents 클래스 작성 방법 생성자 소멸자 대입 연산자, 복사 대입 연산자 객체지향 언어인 C++은 객체를 정의하거나 사용할 수 있도록 클래스라는 기능을 제공합니다. 클래스나 객체를 사용하지 않고도 C++ 프로그램을 얼마든지 작성할 수 있지만 C++에서 가장 핵심적이면서 뛰어난 기능을 활용하지 않는 것입니다. 클래스가 하나도 없이 C++프로그램을 작성하는 것은 마치 파리로 여행을 떠나서 맥도날드에서 햄버거를 먹는 것과 같습니다. 이번 포스팅에서는 클래스의 기본 문법과 기능부터 확실하게 이해해보는 시간을 가지려고 합니다. 아마도 클래스를 정의하는 기본 문법 정도는 아실거라고 생각됩니다. 이번 포스.. 2022. 2. 10.
[C++] Initializer Lists / Uniform Initialization / Designated Initializers References Professional C++ https://en.cppreference.com/w/ Contents Initializer Lists Uniform Initialization Designated Initializers 최근 모던 C++ 문법에 대해 알아보면서, 예제 코드에서 익숙하지 않은 변수 초기화 등을 사용했는데, 한 번 정리할 필요가 있어서 이번 포스팅을 준비했습니다. 아마 대부분의 초기화 방법은 익숙할텐데, 저의 경우에는 자주 접하지 않은 Initializer list와 uniform initialization, 그리고 C++20부터 도입된 designated initializers에 대해 알아보도록 하겠습니다. Initializer Lists (이니셜라이저 리스트) (sinc.. 2022. 2. 9.