전체 글 219

[강의] 11월 15일 수업정리

어제 배운것에 대한 복습과 만들어주는 상속에 대한 수업을 들었다. 1. 복습1.1 enum의 핵심 개념숫자에 의미를 부여하는 것이 가장 중요하며, 숫자와 의미의 관계는 두 가지로 나뉜다:의미가 중요한 경우예: 고유 ID처럼 서로를 구별하기 위한 목적.숫자가 중요한 경우예: π 값을 3으로 고정할 때처럼 값 자체가 중요한 경우.하지만 대부분의 경우, 구별을 목적으로 사용을 한다.  1.2 enum 사용의 장점#define 대신 enum 사용#define은 단순히 상수를 정의하는 데 그친다.enum은 명확한 자료형을 제공하므로 의미와 타입이 더 분명하다.코드를 처음 접하는 상황에서도 무엇을 넣어야 할지 명확하게 알 수 있다.소속 관계#define은 소속 관계를 표현할 수 없지만, enum은 소속 관계를 나타..

C++ 2024.11.17

[강의] 11월 14일 수업정리

오늘은 빌려주는 방법의 상속과 enum, enum class에 대한 수업을 들었다.1. eunm 1.1 eunm 정의 enum은 여러 상수 값을 열거하고 이를 정수형 상수로 매핑하는 방식으로, 컴파일러는 열거형 멤버들을 정수형 상수로 인식한다. 이로 인해 enum 형식의 변수는 인덱싱에 사용할 수 있으며, 산술 연산이나 관게 연산의 피연산자로 활용될 수 있다. 1.2 예시 enum{ E_TEST_A, E_TEST_B, E_TEST_C, E_TEST_D}; enum은 숫자에 의미를 부여하여 독립적인 id를 만드는데 사용된다.#define과 달리 enum은 열거형 멤버의 의미를 알수 있는 네임스페이스 기능을 제공하며 일반적으로 구조체나 클래스는 이름을 부여 정의하지만 enum은 이름을 생략 가능하다. 각 멤..

C++ 2024.11.15

[강의] 11월 13일 수업정리

상속에 대한 수업을 들었다.1. 부모 기능 보장 및 확장1.1 코드 설명아래 코드는 C_CHILD 클래스가 C_PARENT 클래스를 상속받고 있으며, C_CHILD 클래스의 test 메서드에서 부모 클래스의 test 기능을 호출하여 부모 기능을 보장하는 동시에 자식의 고유 기능도 확장하는 예제이다.// parent.h#pragma once#include class C_PARENT{public: virtual ~C_PARENT() = default; virtual void test();};// child.h#pragma once#include"parent.h"class C_CHILD : public C_PARENT{public: void test() override;}; // parent.cpp#inclu..

C++ 2024.11.14

[강의] 11월 12일 수업정리

추상클래스 복습과 포함, 상속에 대한 문제 해결방법에 대한 수업을 들었다.  1. 추상클래스 복습1.1 추상 클래스추상 클래스는 직접 인스턴스화할 수 없고, 주로 다른 클래스가 상속받아 구현을 확장하도록 사용한다.C++에서는 추상 클래스가 하나 이상의 순수 가상 함수를 포함할 때 추상 클래스가 된다.가상 소멸자를 선언해야 메모리 관리가 안전하다. 그렇지 않으면 다형성을 사용할 때 자식 클래스 소멸자가 호출되지 않아 메모리 누수가 발생한.class C_PARENT abstract{public: C_PARENT() = default; virtual ~C_PARENT() = default; C_PARENT(const C_PARENT&) = delete; C_PARENT& operator=(const C_PAR..

C++ 2024.11.13

[예습] 11월 11일 예습

1. 순수가상함수 1.1 정의가상 함수 중 파생 클래스에서 반드시 재정의해야 하는 맴버 함수함수의 동작을 정의하는 본체를 가지고 있지 않다.파생 클래스에서 재정의하지 않으면 사용할 수 없다.1.2 순수 가상 함수 선언 virtual 맴버함수의 원형 = 0; // '=0'은 함수만 있고 본체는 없다는 의미 1.3 순수 가상 함수 예시#include class C_ANIMAL{public: virtual void move() = 0;};class C_DOG : public C_ANIMAL{public: virtual void move() override;};class C_CAT : public C_ANIMAL{public: virtual void move() override;};int main(){ C_DO..

예습 2024.11.12

[강의] 11월 8일 수업정리

오늘도 상속과 일반함수, 가상함수 오버라이딩에 대한 수업을 들었다. 1. 상속1.1 설명 상속은 부모 클래스를 통해 자식 클래스를 관리하기 위해 사용이 된다.상속을 통해 자식 클래스 객체들을 부모 클래스 포인터나 참조로 다룰 수 있으며, 코드를 확장시켜 주는 역할을 한다.그러나 클래스 포인터를 사용하면 부모 클래스에 정의된 멤버 함수만 호출할 수 있어 자식 클래스의 확장된 기능을 호출하기 위해서 가상 함수 오버라이딩이 필요하다. 1.2 예제   [header.h]//animal.h#pragma once#include class C_ANIMAL{public: void animal();};// cat.h#pragma once#include "animal.h"class C_CAT : public C_ANIMA..

C++ 2024.11.10

[강의] 11월 7일 수업정리

상속에 대한 수업을 들었다. 1. C++ 상속에 대한 정리C++에서 상속은 부모 클래스(Parent)를 기반으로, 그보다 더 구체적인 자식 클래스(Child)를 만드는 기법이다.상속의 핵심은 단순히 코드 재사용이 아닌 구체화와 추상화의 관계를 통해 객체의 특성을 확장하는 것이다.자식 클래스는 부모의 특징을 물려받으며, 부모 클래스와 자식 클래스 사이의 관계는 "is-a" 관계라고 표현한다.is-a 관계는 간단히 말하면 부모 클래스는 자식 클래스이다 라는 개념이다.예를 들어, 개(Dog)는 동물(Animal)이다라는 개념에서 개는 동물을 상속받는 구체화된 객체이다. 2. 상속의 개념 정리2.1 확장성상속을 통해 부모 클래스의 기능과 특성을 더 구체화할 수 있다. 예를 들어, Animal이란 추상적인 개념에..

C++ 2024.11.08

[강의] 11월 6일 수업정리

오늘은 클래스 복습, 연산자 오버로딩 전위 증가, 후위 증가, 상속의 이론에 대한 수업을 들었다. 1. 클래스 복습  1.1 빈 클래스 #pragma onceclass C_DATA{public: C_DATA() = default; // 유니폼 초기화를 사용하겠다 ~C_DATA() = default; C_DATA(const C_DATA&) = default; // call by value를 지원하지 않겠다 //void operator=(C_DATA); C_DATA& operator=(const C_DATA&) = default; // 대입연산자의 복사를 지원하지 않겠다};public이란 인터페이스가 제공된 상태이며 클래스의 멤버로 제공된 기본 생성자와 소멸자는 컴파일러가 자동으로 생성해 주지만 복사 생성자..

C++ 2024.11.07

[강의] 11월 5일 수업정리

오퍼레이터, 대입연산, 함수 체이닝에 대한 수업을 들었다. 1. 연산자 오버로딩 ( 오퍼레이터 )1.1 정의 연산자 오버로딩은 객체 지향 프로그래밍에서 다향성의 한 형태로, 연산자를 클래스 또는 구조체에서 재정의하여 클래스객체끼리 연산을 수행할 수 있게 하는 기능이다. 즉, +, -, *, %, /와 같은 기존의 연산자를 특정 클래스의 연산자로 재정의하여 사용할 수 있게 하는 것을 의미한다. 이를 통해 객체끼리 직관적인 산술 연산이나 비교 연산을 수행할 수 있다.( 특수 문자로 명령을 내리는 것 )  1.2 구현 방법반환형 operator연산자(매개변수); 1.3 사용 방법 C_DATA 클래스에서 +연산자를 오버로딩하는 방법이다.  [header.h]#pragma onceclass C_DATA{priva..

C++ 2024.11.05

[강의] 11월 1일 수업정리

깊은 복사, 얕은 복사 복습과, 2차원 배열 동적할당, 소멸자에 대한 수업을 들었다.  1. 깊은 복사, 얕은 복사 복습1.1 포인터로 외부 데이터를 받아와 세팅  [header.h]#pragma onceclass C_DATA{private: int* m_pData;public: C_DATA() = default; void init(int* pData); // 외부에서 데이터를 받아와 셋팅 int getData();}; [header.cpp]#include "data.h"void C_DATA::init(int* pData){ m_pData = pData;}int C_DATA::getData(){ return *m_pData;}[main.cpp]#include #include "data.h"void pr..

C++ 2024.11.03