C++ 공부 | 자연수 뒤집어 배열로 만들기 - Code Kata | 2026/05/01 (Fri) | TIL 15th

2026. 5. 2. 00:02·TIL/Boot Camp

C++ 공부 | 자연수 뒤집어 배열로 만들기 - Code Kata

 

this→ | 객체 자기 자신의 주소를 가리키는 포인터

  • 멤버 함수가 호출된 객체 자기 자신의 주소를 가리키는 숨겨진 포인터입니다. 따라서 this->는 그 포인터를 사용하여 객체의 멤버 변수나 멤버 함수에 접근하는 방식을 의미
  • this-> is a specific syntax used to access members of the current object within its own class method
  • The this Pointer: In C++, this is a special pointer automatically passed to every non-static member function. It holds the memory address of the specific object instance currently executing the function.
  • The Arrow Operator (>): Because this is a pointer, you must use the arrow operator (>) instead of the dot operator (.) to access the object's variables or functions.
  • Common Use Cases:
    • Resolving Ambiguity: It is most frequently used when a function parameter has the same name as a class member (e.g., this->name = name;).
    • Returning the Current Object: It allows a function to return a reference to itself using return *this;, which is common in method chaining.
    • Clarity: Some developers use this-> explicitly to make it clear they are referring to a class-level member rather than a local variable.
  • C++ 에서 객체 (Object) 란 클래스(Class) 를 바탕으로 실제 구현된 데이터와 기능의 집합체
    • 인스턴스 (Instance) 화 한다란 말로 혼용되어 사용됨 : 클래스로부터 객체를 만드는 과정을 인스턴스화라고 하며, 그렇게 생성된 구체적인 객체를 인스턴스라고 부릅니다.
  • Class == 설계도 | 인스턴스 == 실제 만들어진 결과물

생성자 (Constructor)

  • 생성자는 반환형을 명시하지 않으며, class이름과 동일한 이름을 가진 함수로 정의됩니다.
  • 매개변수 (parameter) 없는거, 있는거, 기본 매개변수가 있는 생성자 등으로 가능
  • 객체가 생성될 때, 멤버 변수를 포함해서 필요한 정보들이 메모리에 올라갑니다.
    • 이 작업이 (인스턴스화 되는 순간) 완료되면 생성자가 호출됩니다.

인스턴스화와 메모리 할당 방식

1. 인스턴스화와 메모리 할당 방식

C++에서 인스턴스화는 주로 다음 세 가지 방식으로 이루어지며, 각기 다른 메모리 영역을 사용합니다.

  • 스택(Stack) 영역 (자동 메모리 할당):
    • 방식: 함수 내부에서 지역 변수로 객체를 생성 (MyClass obj;)
    • 특징: 함수가 종료되면 자동으로 메모리가 해제됩니다.
  • 힙(Heap) 영역 (동적 메모리 할당):
    • 방식: new 키워드를 사용하여 생성 (MyClass* pObj = new MyClass();)
    • 특징: 프로그래머가 명시적으로 delete를 호출하여 메모리를 해제해야 합니다. 그렇지 않으면 메모리 누수(Memory Leak)가 발생합니다.
  • 데이터(Data/Static) 영역 (정적/전역 메모리 할당):
    • 방식: 전역 변수나 static 키워드를 사용하여 생성.
    • 특징: 프로그램 시작 시 메모리에 올라가고 프로그램이 종료될 때 해제됩니다.

2. 인스턴스화 시 메모리에 올라가는 것

객체가 메모리에 생성될 때 다음 정보들이 공간을 차지합니다.

  • 멤버 변수: 각 인스턴스는 자신만의 멤버 변수 값을 저장할 메모리 공간을 갖습니다.
  • 가상 함수 테이블 포인터(vptr): 클래스에 가상 함수(Virtual Function)가 있는 경우, 가상 함수 테이블을 가리키는 포인터가 메모리에 올라갑니다.

참고: 멤버 함수(Method)는 인스턴스별로 메모리에 올라가지 않고, 코드 영역에 딱 하나만 존재하며 인스턴스들이 공유합니다.

3. 정리

  • 클래스: 설계도 (코드 영역)
  • 인스턴스(객체): 실제 데이터 (스택, 힙, 또는 데이터 영역)

따라서, 인스턴스화는 클래스라는 틀을 바탕으로 메모리에 실제 데이터를 할당하는 핵심 과정입니다.


in c++ #ifndef, #define, #endif

  • In C++, #ifndef, #define, and #endif are preprocessor directives used together to create Include Guards. Their primary purpose is to prevent a header file from being included more than once in the same compilation unit, which would otherwise cause "redefinition" errors.
  • 중복 정의 에러 방지: 같은 헤더 파일이 다른 헤더 파일들에 의해 여러 번 포함될 때, 구조체나 클래스가 중복 정의되는 것을 막습니다.
  • 컴파일 속도 향상: 이미 포함된 파일은 전처리기가 건너뛰게 되어, 불필요한 전처리 작업을 줄여 컴파일 속도를 높입니다.
  • #ifndef (if not defined)
  • #define: 첫 번째 호출 시에만 이 부분이 실행되어, 해당 헤더 파일이 처리되었음을 표시합니다.
  • #endif: #ifndef
  • 요즘은 #pragma once 를 사용한다고함 더 좋은데 모든 컴파일러 공식 표준이 아니여서 #ifndef 를 더 선호

Class 의 Header (선언부) 와 Source (구현부) 나누기

  • 나누는 이유

Header

(목차)

  • 맴버 함수 정의
  • 맴버 변수

Source

(내용)

  • 맴버 함수 세부 구현

CH 1-6

  • 맴버 초기화 리스트
    • Vehicle(string c, int s) : color(c), speed(s) { }
    • !!! 생성자의 실제 코드 부분 보다, 맴버 초기화 리스트가 먼저 실행된다
  • 자식 부모 클래스
    • Drived:Base()
      • Derived 생성자 호출 시 , 코드를 수행하기 전에 Base() 를 실행하라는 의미
        • 이러한 방식으로 기본 클래스는 기본 클래스의 생성자가 초기화하고 파생 클래스는 파생 클래스의 생성자가 초기화할 수 있다.

Code Kata

  • 017. 자연수 뒤집어 배열로 만들기 | Solved Date: 2026-05-01-Fri | Problem Link
저작자표시 비영리 변경금지 (새창열림)
'TIL/Boot Camp' 카테고리의 다른 글
  • C++ Text RPG Extra Work: C++ Template; Code Kata 코드 카타 [음양 더하기 & 나누어 떨어지는 숫자 배열 & 서울에서 김서방 찾기] | TIL 17th | 캠프 11일 차 | 05/06/2026 (Wed)
  • Code Kata [정수 내림차순으로 배치하기 | 하샤드 수]; C++ ; Text RPG Complete | 캠프 10일 차 | 2026/05/04 (Mon) | TIL nth
  • Code Kata [ x만큼 간격이 있는 n개의 숫자 ]; C++ 강의 듣기 1차 완료 | 캠프 9일 차 | 2026/04/30 (Thur) | TIL 15th
  • Code Kata; 코드따라치기 복습 | 캠프 8일 차 | 2026/04/29 (Wed) | TIL 14th
DevCol
DevCol
DevCol (Development Collaboration). 함께 개발 & 공부 & IT 정보 나눔장소
  • DevCol
    DevCol (Development Collaboration)
    DevCol
  • 블로그 메뉴

    • Unreal Engine
    • TIL
    • 게임국가기술자격검정 게임프로그래밍전문가 [한국콘텐츠진흥원]
    • 분류 전체보기 (73) N
      • Unreal Engine (31) N
        • Project (2) N
        • Dev Log (0)
        • Debugging (2) N
        • Blueprint (1)
        • UE 기초 (25) N
        • UE 심화 (0)
        • TA (1) N
      • Programming Language (0)
        • C++ (0)
        • C# (0)
      • Unity Engine (0)
      • 자격증 (3)
        • 게임국가기술자격검정 [한국콘텐츠진흥원] (3)
      • Coding Test | 코딩테스트 (0)
        • 프로그래머스 기초 (0)
        • 프로그래머스 입문 (0)
      • TIL (38) N
        • Boot Camp (32) N
      • Git & Github (1)
  • 링크

    • Youtube
    • GitHub
    • itch.io
    • Blog (En)
  • 공지사항

  • 인기 글

  • 태그

    게임개발
    Boot Camp
    게임 개발
    기초
    Programming
    프로그래밍
    언리얼 엔진
    Unreal engine
    코드카타
    Code Kata
    Devlog
    Game Dev
    c
    C++
    UE
    UE5
    코드 카타
    내일배움캠프
    cpp
    til
  • 최근 글

  • GitHub Youtube itch
  • hELLO · Designed By 정상우.v4.10.6
  • DevCol
    C++ 공부 | 자연수 뒤집어 배열로 만들기 - Code Kata | 2026/05/01 (Fri) | TIL 15th
    상단으로

    티스토리툴바