C++(57)
-
[Visual Studio 2019] 빌드 제외하는 법
1. 헤더 파일에 있는 파일(.cpp)에서 마우스 우클릭 → `속성` 2. `구성 속성` - `일반`에서 '빌드에서 제외'를 '예'로 변경 → `적용` 후 `확인` 해당 빌드에서 제외되면 Visual Studio에서는 없는 파일로 생각한다.
2024.04.28 -
[C++] 다형성과 추상화 (+ 다운 캐스팅, RTTI)
아래 링크 클릭 시 해당 본문으로 이동다형성추상화예시 1 (virtual)다운 캐스팅RTTI(RunTime Type Identification or Information)예시 2 (dynamic_cast)다형성(Polymorphism)• 다양한 형태를 갖는 성질로, 같은 이름으로 다른 기능을 구현하는 것 ex) 동음이의어, 동명이인class CParent{protected: int m_i;public: void SetInt(int _a) { m_i = _a; }public: CParent() :m_i(0) {} // 생성자 오버로딩 CParent(int _a) : m_i(_a) {} ~CParent() {}};// 클래스 CChild가 클래스 CParent를 상속받는다.class CChild : ..
2024.04.05 -
[C++] 객체지향 언어 특징
객체지향 언어 특징1. 캡슐화(Encapsulation)캡슐화는 은닉성을 위한 수단이며, 은닉성은 캡슐화의 목표 중 하나이다.은닉성: 어떤 부분을 외부에 공개 처리할 것인지 말 것인지를 접근제한 지정자를 통해서 지정할 수 있다.• 객체지향 프로그래밍에서 데이터와 그 데이터를 처리하는 함수를 하나의 단위로 묶는 것마치 약을 캡슐에 담아 보호하듯, 객체 내부의 데이터를 외부의 간섭으로부터 보호하고, 데이터에 대한 접근을 제한하여 프로그램의 안정성을 높인다.캡슐화 장점• 데이터 보호: 외부에서 데이터를 직접 수정하는 것을 방지하여 예기치 않은 오류 발생 가능성을 줄인다.• 코드 간섭 방지: 각 객체는 독립적으로 작동하므로, 다른 객체와의 의존성을 줄이고 코드의 복잡성을 낮춘다.• 유지보수성 향상: 코드를 모듈..
2024.04.05 -
[C++] 오버로딩 vs. 오버라이딩 (+ 바인딩)
오버로딩 vs. 오버라이딩특징오버로딩오버라이딩함수 이름동일동일매개변수타입 또는 개수가 다르다.타입 및 개수가 같다.반환 타입달라도 된다.같아야 한다.발생 위치같은 클래스 내상속 관계에서목적다양한 데이터 처리부모 클래스 기능 재정의바인딩정적 바인딩동적 바인딩바인딩(Binding)• 함수 호출 시 실제로 실행될 코드를 연결하는 과정즉, 어떤 함수를 호출했을 때 컴퓨터가 정확히 어떤 코드를 실행해야 할지 연결하는 작업이다.정적 바인딩과 동적 바인딩1) 정적 바인딩• 컴파일 시점에 함수 호출과 실행될 코드가 연결된다.즉, 코드를 컴파일하는 시점에 어떤 함수를 호출하면 어떤 코드가 실행될지 확정된다.• 오버로딩에서 주로 사용되며, 컴파일러는 함수 이름과 매개변수의 타입과 개수를 보고 어떤 함수를 호출할지 미리 결..
2024.04.05 -
[C++] BST의 중위 후속자, 중위 선행자 및 BST의 삭제 구현
아래 링크 클릭 시 해당 본문으로 이동BST 중위 후속자, 중위 선행자 구현코드BST의 삭제BST의 삭제 예시 (CBST.h 전체 코드)예시 1 (25 삭제)예시 2 (100만 있는 경우)예시 3 (자식이 1개 있는 경우 (75를 제외하고 50 삭제))예시 4 (100, 150 빼고 다 제외, 100 삭제)예시 5 (자식이 2개 있는 경우 (150 삭제))예시 5-1 (자식이 2개 있는 경우 (100 삭제))BST 중위 후속자, 중위 선행자 구현▷ 예시CBST.h#pragma once#include // 서로를 가리킬 수 있는 노드 타입enum class NODE_TYPE{ PARENT, // 부모 노드 // 0 LCHILD, // 왼쪽 자식 // 1 RCHILD, // 오른쪽 자식 // 2 ..
2024.04.04 -
[C++] enum 클래스를 활용하여 BST(이진 탐색 트리) 구현
enum 클래스로 서로를 가리킬 수 있는 노드 타입을 지정한다.`tBSTNode`에 부모, 왼쪽 자식, 오른쪽 자식을 가리키는 각각의 포인터를 enum 클래스에 정리해 놓는다.CBST.h#pragma once// 서로를 가리킬 수 있는 노드 타입enum class NODE_TYPE{ // (인덱스의 이름이라고 생각하기) PARENT, // 부모 노드 // 0 LCHILD, // 왼쪽 자식 // 1 RCHILD, // 오른쪽 자식 // 2 END, // 마감 // 3};// data 파트에 해당하는 구조체templatestruct tPair{ T1 first; T2 second;};// make_pair() 함수templatetPair make_bstpair(const T1& _first, ..
2024.04.04 -
[C++] enum과 enum 클래스
아래 링크 클릭 시 해당 본문으로 이동enumenum 클래스enum• 열거형 자료형• 각 열거자는 열거 목록의 위치에 따라 정수 값이 자동으로 할당된다.• 컴파일러가 기본적으로 첫 번째 열거자에는 정수 0을 할당하며, 그 이후 열거자는 이전 열거자에 1을 더한 값이 할당된다.• 자동으로 값이 주어지지만 직접 숫자를 지정할 수도 있다.숫자를 지정한 후의 만약 다음 열거자에 숫자를 지정하지 않았다면 1을 더한 값으로 할당된다.• 열거형은 고유한 자료형이기 때문에 다른 열거형을 할당하려고 하면 컴파일 에러가 발생한다.enum 타입은 enum값이 숫자로 간주되기 때문에 기본적으로 정수형이다.• `enum` 식별자는 보통 모두 대문자로 이름을 짓는다.enum MY_TYPE{// 컴파일러는 0부터 시작한 숫자로 받..
2024.04.04 -
[C++] BST(이진 탐색 트리) 구현
CBST.h#pragma once// data 파트에 해당하는 구조체templatestruct tPair{ T1 first; T2 second;};// 노드라는 데이터 타입 단위templatestruct tBSTNode{ // data 파트(map에서는 pair라고 함.)를 가리키는 포인터 tPair pair; // 부모 노드를 가리키는 포인터 tBSTNode* pParent; // 자식 노드를 가리키는 포인터 tBSTNode* pLeftChild; tBSTNode* pRightChild;};templateclass CBST{private: // BST는 루트 노드만 알면 된다. tBSTNode* m_pRoot; // 루트 노드 주소 int m_iCount; // 데이터 개수public: bool i..
2024.04.03