잼바르기

고정 헤더 영역

글 제목

메뉴 레이어

잼바르기

메뉴 리스트

  • 홈
  • 이사 전 노션
  • 전체
    • Portpolio
      • Unreal C++
      • Unity
    • C / C++
      • 키워드
      • Effective C
    • Unreal
      • Unreal
      • 개념
    • DirectX
    • 자료구조 / 알고리즘
      • 자료구조
      • 알고리즘
    • 네트워크
    • Design Pattern
    • 개념
      • 여러가지 지식
    • 코딩테스트
    • CA / OS

검색 레이어

잼바르기

검색 영역

컨텐츠 검색

C / C++

  • Chapter 6. 상속, 객체지향 설계

    2024.10.08 by 부레두

  • Chapter 5. 구현

    2024.10.03 by 부레두

  • Chapter 4. 설계 및 선언

    2024.09.04 by 부레두

  • [실수] 부동 소수점

    2024.08.27 by 부레두

  • [C++] 스마트 포인터의 쓰는 이유

    2024.04.11 by 부레두

  • Cast ~ static / dynamic의 소모 비용

    2024.03.25 by 부레두

  • 이동 생성자의 원리 w.우측값(rvalue)

    2024.03.06 by 부레두

  • RAII ( Resource Acquisition Is Initialization )

    2024.03.06 by 부레두

Chapter 6. 상속, 객체지향 설계

32. public 상속 모형은 반드시 "is-a"를 따르도록 만들자public 상속은 '기본 클래스 객체가 가진 모든 내용들이 파생 클래스 객체에도 그대로 적용된다는 사실을 명시'한 것. 예시로 "새" 라는 기본 클래스와 "비둘기"와 "펭귄" 이라는 파생 클래스를 생성했을때,기본 클래스에 "날다 = Fly"라는 기능을 정의 했을 경우, 파생 클래스인 "비둘기"와 "펭귄" 모두 Fly 라는 기능을 상속받는다.하지만, 실제로 펭귄은 날 수 없는 새의 한 종류로 날다라는 기능이 실행되면 안되는 파생 클래스다. 때문에 상속 관계의 클래스를 설계할 때는 가상함수를 정의해 파생 클래스들이 상속받는 함수들의 동작을 다르게 만들 수 있는 여지를 남겨두는 것이 설계에 영향을 끼칠 수 있다. 33. 상속된 이름을 숨기는..

C / C++/Effective C 2024. 10. 8. 01:59

Chapter 5. 구현

항목 26. 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자.변수가 초기화될 때 생성자와 소멸자가 호출되어 생성된다. 항목 26에서는 이조차 비용으로 정리되는 C++에서는 값을 초기화하는 타이밍을 최대한 늦추어 멤버함수 호출 빈도 관리가 비용 절감에 도움된다는 내용이다. 밑은 두가지 경우가 각각 생성자와 소멸자가 몇번 호출되는 지에 따른 비교다.// 예제 1)Widget W;for(int i = 0; i  예제 1과 예제 2번의 차이는 "Widget" 변수가 for문의 밖에서 정의되는지 안에서 정의되는지의 차이뿐이지만,간단히 정리해보면예제 1번 코드에서는  '생성자 1번 + 소멸자 1번 + 대입 n 번'예제 2번 코드에서는  '생성자 n번 + 소멸자 n번' 정도의 호출이 일어난다.스코프에 따라 ..

C / C++/Effective C 2024. 10. 3. 22:18

Chapter 4. 설계 및 선언

18. 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자인터페이스 오용으로 발생할 수 있는 문제점과 그 해결법을 제시한 항목내용에 대해 설명하기에 앞서 내가 정리한 인터페이스를 설명하자면 "순수가상함수로만 이루어진 클래스"라 설명을 마칠게 아니라 "사용할 함수의 이름을 명세한 설계도" 정도의 부가 설명이 필요하다고 생각한다. 설계도의 경우, 실제 사용자는 설계도만 보고 사용하기엔 부족한 부분이 발생할 여지가 다분하기 때문에 이런 문제를 사전에 방지하는 것이 유효한 테크닉이 된다는 내용이다. 책에서 제시된 해결 방안으로Wrap 클래스 생성반환 타입의 const 한정기본 타입처럼 동작하는 클래스로 생성등이 있다. * 교차 DLL 문제 ? ( 자세히 이해하지 못한 부분 )위 방식에 따라 인터..

C / C++/Effective C 2024. 9. 4. 18:02

[실수] 부동 소수점

0. 개요구현 능력을 기르기 위해 백준 2108번, 통계학 문제를 풀다가 여러 C++ 도서 초반에 기재된 부동소수점(floating point)에 대한 내용을 다시 생각해볼 기회가 생겼다. 문제에 대한 해석은 다른 글에 포함하고 이번에 부동소수점에 대한 내용을 복습하고 추가로 알게된 내용들을 정리한다.1. 부동 소수점 방식컴퓨터는 수를 2진수로 표현해야 하기 때문에 실수를 표현하는데 훨씬 복잡하고 다양한 방식이 있다.가장 간단한 '고정 소수점 방식' 그리고 '부동 소수점 방식'이 있다. 실수를 표현하는데 고정 소수점은 "정수부와 소수부"로 나뉘는 반면 부동 소수점은 "지수부와 가수부"로 구성되어 있다.고정 소수점 방식의 "제한된 자릿수로 표현가능한 범위 작다."라는 문제를 해결하기 위해 부동 소수점을 사..

C / C++ 2024. 8. 27. 22:43

[C++] 스마트 포인터의 쓰는 이유

0. 개요 언리얼에서 제공하는 자동 메모리 관리 시스템, 가비지 컬렉션을 보면서 참조 카운팅이란 개념에 집중하다 C에서도 이를 이용해 반자동적으로 메모리 관리에 도움을 주는 스마트 포인터가 생각이 났다. 개인적으로 찾으며 알게된 조금 더 깊은 내용도 포함해 스마트 포인터에 대한 내용을 기록한다. 1. 스마트 포인터 ? new, delete로 할당한 메모리를 해제해야 하는 것은 C++ 프로그래머로서 중요한 부분이다. 자칫하면 큰 문제가 발생할 수 있는 문제와 직결되는 간단한 문제이기 때문이다. 이때문에 Effective C++에서도 「클래스를 통한 메모리 생성과 해제에 대한 부분은 생성자와 소멸자에서 처리하게 만듦 = RAII」으로써 프로그래머가 메모리 관련 문제에 쓰이는 신경을 해소하는 테크닉을 소개한 ..

C / C++ 2024. 4. 11. 03:39

Cast ~ static / dynamic의 소모 비용

0. 개요 4종류의 캐스트, static_cast, dynamic_cast, const_cast, ,reinterpret_cast의 기본을 알고 추가적인 내용을 작성 1. static_cast 컴파일 타임에 타입 체크를 수행해 컴파일러가 타입 안정성을 보장할 수 있는 변환에 주로 사용 기본 자료형 간의 명시적 변환 ( float → int ) 상속 관계에 있는 클래스끼리의 포인터 또는 참조 변환 ( 하위에서 상위로 ) void 포인터를 다른 타입의 포인터로 변환 실행 시간 비용이 추가로 발생하지 않지만, 완벽하게 타입 안정성을 보장하지 않으며 이로 인해 "런타임 에러"가 발생할 수 있음. 2. dynamic_cast 런타임에 타입 체크를 수행 상위 클래스 포인터나 참조를 하위 클래스 타입으로 안전하게 변..

C / C++ 2024. 3. 25. 19:37

이동 생성자의 원리 w.우측값(rvalue)

컴파일러가 자동으로 생성하는 다수의 함수가 있다. 대략 생성자, 소멸자, 복사 대입연산자 등이 있는데 이곳에선 복사 생성자와 이동생성자를 다룬다. 이 둘은 이름 그대로 값을 복사, 이동하는데 사용하곤 한다. 어떻게 작동하는지 원리를 이해하기 위해서 먼저 알고가면 좋은 키워드가 있어 먼저 서술한다. 1. 좌측값 (lvalue), 우측값 (rvalue) C++에서 쓰이는 표현식은 대체로 '구문이 어떤 타입을 가지는가?' 와 '어떠한 종류의 값을 가지는가?' 를 기준으로 좌측값(이하 lvalue), 우측값(이하 rvalue)로 구분이 가능하다. int test = 6; 위 표현식에서 'test' 라 이름 지은 변수는 메모리 상에 주소를 가지고 존재하는 이름으로 & 연산자를 통해 주소값을 알수있다. 이렇게 주소..

C / C++ 2024. 3. 6. 16:45

RAII ( Resource Acquisition Is Initialization )

RAII ? 다른 말로 SBRM ( Scope-Bound Resource Management )라고도 부르는 이 개념은 「일종의 디자인 패턴」으로 "자원 획득은 초기화다"라고 직역할 수 있는 말은 '메모리 할당의 과정을 객체 초기화 과정과 함께해라' 라고 할 수 있겠다. C++ programming technique which binds the life cycle of a resource that must be acquired before use to the lifetime of an object. [1] " 사용하기 전에 획득해야 하는 리소스의 수명 주기를 개체의 수명에 바인딩하는 C++ 프로그래밍 기법. " 이라는 말처럼 기능이 아닌 기법이기 때문에 이렇게 작동될 수 있는 원리를 알아야 한다고 생각한..

C / C++/키워드 2024. 3. 6. 14:58

추가 정보

인기글

최신글

페이징

이전
1 2 3
다음
TISTORY
잼바르기 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바