본문 바로가기

Programming II/C++24

[전문가를 위한 C++] CHAPTER1 C++와 표준 라이브러리 초단기 속성 코스 1.1 C++의 기초- C++는 흔히 C의 개선판 또는 C의 상위 집합으로 알려져 있다.   - C++는 원래 C에 객체지향 개념을 추가하려는 목적으로 설계했기 때문에 클래스가 추가된 C라고도 부른다.1.1.1 프로그래밍 언어의 공식 예제 'Hello, World'import // C++20 이전 버전에서는 #include int main(){ std::out  + 주석- 주석은 프로그래머에게 전달하는 메시지며 컴파일러는 이 부분을 무시한다.   - 슬래시 두 개를 연달아 적으면 그 지점부터 그 줄 끝까지 나오는 모든 문자를 주석으로 처리한다.   - 여러 줄 주석은 /*로 시작해서 */로 끝나며, 그 사이의 모든 문자를 주석으로 처리한다. + 모듈 임포트- 모듈은 예전에 헤더 파일이라 부르던 메커.. 2025. 3. 30.
[Effective C++] Chapter8 new와 delete를 내 맘대로 - C++의 메모리 관리 루틴이 어떻게 동작하는지를 알아두면 좋다. operator new 및 operator delete이다. 여기에 new 처리자(new-handler)가 추가로 있는데 메모리 요구를 operator new가 맞추어 주지 못했을 때 호출되는 함수이다.- 힙은 수정이 가능한 전역 자원으로 분류된다.- operator new 및 operator delete는 객체 한 개를 할당할 때만 적용되는 함수이다.- operator new[] 및 operator delete[]는 배열을 담을 메모리의 경우에 사용한다.항목 49: new 처리자의 동작 원리를 제대로 이해하자 / 348(10)- 사용자가 보낸 메모리 할당 요청을 operator new 함수가 맞추어 주지 못할 경우에(즉, 할당할 메모리.. 2025. 3. 26.
[Effective C++] Chapter7 템플릿과 일반화 프로그래밍 - 일반화 프로그래밍이란? 조작할 객체의 타입과 상관없이 코드를 작성하도록 하는 개념   - for_each, find, merge 등의 STL 알고리즘이 일반화 프로그래밍의 본보기가 된다.    - C++ 템플릿 메커니즘은 그 자체가 튜링 완정성을 갖고 있다. 즉 C++ 템플릿을 사용하면 계{산 가능한 어떤 값도 계산할 수 있다.       - 튜링 완정성이란? 튜링 동등 혹은 계산적으로 범용적이란 다른 말로도 불린다. - 템플릿 메타프로그래밍이란? 컴파일 내부에서 실행되고 컴파일 과정이 끝날 때 실행을 멈추는 또 하나의 프로그램을 만드는 것이다.항목 41: 템플릿 프로그래밍의 천릿길도 암시적 인터페이스와 컴파일 타임 다형성부터 296 (4)- 객체 지향 프로그래밍의 세계를 회전시키는 축은 명시적 인터.. 2025. 3. 26.
[Effective C++] Chapter6 상속, 그리고 객체 지향 설계 - 상속은 단일 상속과 다중 상속이 가능하고, 상속 관계 하나하나가 public, protected, private의 성질을 가질 수 있습니다. 그뿐 아니라 여기에 가상 상속과 비가상 상속이 얹힐 수도 있다.- 멤버 함수? 가상 함수? 비가상 함수? 순수 가상 함수? 그리고 C++가 지원하는 다른 기능들과 이들의 상호관계.- 기본 매개변수는 가상 함수와 어떻게 맞물려 돌아갈까?- 상속은 C++의 이름 탐색 규칙에 어떤 영향을 줄까요?- 설계 시의 선택사항은 어떤 식으로 바뀔까요?- 어떤 클래스의 동작 원리를 외부에서 수정할 수 있어야 한다고 결정했을 때, 과연 가상 함수가 최선의 방법일까요? - public 상속은 반드시 is-a 관계를 뜻해야 하며, 이 외의 의미를 붙이려고 하면 난처해진다.- 가상 함.. 2025. 3. 26.
[Effective C++] Chapter5 구현 항목 26: 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자.- 생성자 혹은 소멸자를 끌고 다니는 타입으로 변수를 정의하면 반드시 물게 되는 비용이 두개 있다. 하나는 프로그램 제어 흐름이 변수의 정의에 닿을 때 생성자가 호출되는 비용이고 또 하나는 그 변수가 유효범위를 벗어날 때 소멸자가 호출되는 비용이다.- 따라서 변수의 정의는 변수의 정의가 꼭 필요해지기 전까지로 미루는 편이 낫다.- 상당수의 경우에 어떤 객체를 가지고 하는 가장 처음 일은 값을 주는 것이다. 이때 대개 대입 연산을 쓴다.   - 객체를 기본 생성하고 나서 값을 대입하는 방법이 원하는 값으로 직접 초기화하는 방법보다 효율지 좋지 않다.      - 따라서 변수를 정의함과 동시에 초기화하는 것이 좋다. 이때 복사 생성자가 쓰.. 2025. 3. 26.
[Effective C++] Chapter1 C++에 왔으면 C++의 법을 따릅시다 2025.02.12 Study항목1: C++를 언어들의 연합체로 바라보는 안목은 필수- C++은 다중패러다임 프로그래밍 언어라고 불린다. 절차적 프로그래밍을 기본으로 하여 객체 지향, 함수식, 일반화 프로그래밍을 포함하며 메타 프로그래밍 개념까지 지원하고 있다.- C++은 여러 개의 하위 언어를 제공한다. 즉, 네 가지 하위 언어들의 연합체이다. -> C, 객체 지향 개념의 C++, 템플릿 C++, STL # C더보기    - C++은 여전히 C를 기본으로 하고 있다. 블록, 문장, 선행 처리자, 기본제공 데이터타입, 배열, 포인터 등 모든 것이 C에서 왔다.# 객체 지향 개념의 C++더보기    - 클래스를 쓰는 C에 관한 것이 모두 해당 된다. 클래스(생성자와 소멸자 개념까지), 캡슐화, 상속, 다향.. 2025. 2. 12.