분류 전체보기465 [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. [C++] 메모리 관리 (3) - 스마트 포인터 (Smart Pointer) References Professional C++ https://en.cppreference.com/w/ Contents 스마트 포인터 (Smart Pointer) unique_ptr, shared_ptr, weak_ptr [C++] 메모리 관리 (1) - 동적 메모리, 배열과 포인터 [C++] 메모리 관리 (2) - 메모리 문제 유형과 해결 방법 이전 포스팅 마지막 부분에서 스마트 포인터인 unque_ptr을 사용해서 메모리 누수를 방지하는 방법을 간단히 보여주었습니다. 지난 두 포스팅에 이어서 이번에는 메모리를 쉽게 관리해주는 C++의 스마트 포인터에 대해서 알아보도록 하겠습니다. 5. 스마트 포인터 Smart Pointer 방금까지 살펴봤듯이 C++에서 메모리 관리는 에러와 버그의 원인입니다. 메모.. 2022. 2. 8. [C++] 메모리 관리 (2) - 메모리 문제 유형과 해결 방법 References Professional C++ https://en.cppreference.com/w/ Contents 흔히 발생하는 메모리 문제 유형 메모리 누수 감지 도구 (Visual C++, Valgrind) 이전 포스팅에 이어서 C++의 메모리 관리에 대해서 알아보도록 하겠습니다. [C++] 메모리 관리 (1) - 동적 메모리, 배열과 포인터 이번 포스팅에서는 먼저 흔하게 발생하는 메모리 문제 유형들과 이러한 문제들을 피하는 방법들에 대해 알아보겠습니다. 4. Common Memory Ptifalls new/delete/new[]/delete[]와 low-level 메모리 연산을 사용하여 동적 메모리를 관리하면 오류가 발생하기 쉽습니다. 메모리 관련 버그가 발생하는 상황을 명확하게 정리하는 것.. 2022. 2. 7. [C++] 메모리 관리 (1) - 동적 메모리, 배열과 포인터 References Professional C++ https://en.cppreference.com/w/ Contents 동적 메모리(Dynamic Memory) 다루기 배열과 포인터 비교 low-level 메모리 연산 C++은 C와 마찬가지로 최대한의 자유를 보장하며, 우리가 무엇을 하고 있는지 잘 알고 있다고 가정합니다. C++ 언어 자체는 매우 유연하며, 안전성이 떨어지는 것을 감수하면서 성능을 추구하기 때문에 심각한 문제가 발생할 가능성이 있는 작업을 할 수도 있습니다. 메모리 할당(allocation)과 관리(management)는 C++ 프로그래밍에서도 특히 문제가 발생하기 쉬운 부분입니다. 그래서 높은 수준의 프로그램을 작성하려면 메모리 관리의 내부 작동 방식을 확실히 이해하고 있어야 하는데.. 2022. 2. 7. [C++] string과 string_view References Professional C++ https://en.cppreference.com/w/ Contents C-Style Strings String Literals Raw String Literals C++ std::string 클래스 std::string_view 클래스 Nonstandard Strings C 언어에서는 단순히 널(NULL)로 끝나는 문자 배열로 스트링을 표현했습니다. 하지만 이렇게 하면 버퍼 오버플로우(buffer overflow)를 비롯한 다양한 문제들 때문에 보안 취약점이 드러날 수 있습니다. C++ 표준 라이브러리에서는 이러한 문제를 방지하기 위해 보다 안전하고 사용하기 쉬운 std::string 클래스를 제공합니다. 이번 포스팅에서는 C++에서 제공하는 strin.. 2022. 2. 6. 이전 1 ··· 15 16 17 18 19 20 21 ··· 47 다음