인스턴스 메소드 (객체에 정의되어 있는 함수)인스턴스 변수 (인스턴스 메소드 내부에 있는 변수)클래스 (객체를 만들 수있는 장치)(설계도)\-클래스를 이용해서 만든 객체를 인스턴스 라고 부른다.멤버 변수, 멤버함수 \-클래스 상에서 인스턴스 메소드, 인스턴스 변수를 지
1. Date 클래스에 여러가지 생성자들을 추가해보세요 (난이도 : 下) setdate 함수를 없애고 생성자 2개를 만들었다. 현재 작성중인 날짜 2022.11.16 날짜를 가진 기본 생성자 인자가 3개인 기본 생성자 2. 수학 관련 소프트웨어를 만드는 회사에서 의
new 객체를 동적으로 생성하면서와 동시에 자동으로 생성자도 호출한다. 리턴하는 것이 바로 생성된 객체의 주소값, 따라서 & 를 붙일 필요가 없다 class 내부에 있는 const 클래스 안에 멤버 변수와 함수들한테 const를 붙임으로써 해당 함수에서 객체의 멤
초기화 리스트 초기화 리스트를 사용하는 것과 사용하지 않는 것은 똑같아 보이지만 사용하는 것이 더 효율적이다. (속도가 더 빠름) 멤버변수와 매게변수의 이름이 같아도 된다. (외부에 있는 변수는 "멤버변수", 괄호 안의 변수는 "매게변수" 를 우선적으로 지칭 하도록 되
우리가 구현하려고 하는 것은 '은행계좌 관리 프로그램' 이다. 프로젝트 01단계에서는 C 스타일로 구현하는 것을 목표로 한다. 구현 할 기능은 다음과 같다.기능 1. 계좌개설기능 2. 입 금기능 3. 출 금기능 4. 전체고객 잔액조회그리고 프로그램을 간결하게 하기 위해
버전 0.1 에서 만들었던 은행계좌 관리 프로그램을 버전 0.2 로 업그레이드 시켜보자.구조체 Account 를 이번에 배운 클래스 Account 로 변경한다.고민해봐야 할 두 가지 어떻게 캡슐화를 시키고 정보를 은닉시켜야 하는지.생성자와 소멸자는 어떻게 정의해야 하는
버전 0.2 에서 만들었던 은행계좌 관리 프로그램을 버전 0.3 으로 업그레이드 시켜보자.깊은 복사를 진행하는 복사 생성자를 정의해보자.실제 깊은 복사 생성자의 호출여부는 중요하지 않다. 클래스는 그 자체로 완성품이 되어야 하기 때문에, 당장 필요한 것만으로 채우지 않
버전 0.3 에서 만들었던 은행계좌 관리 프로그램을 버전 0.4 로 업그레이드 시켜보자.선언이 가능한 모든 멤버함수를 const 로 선언하자.0.3 버전과 다른점 : 아래 코드 부분이 추가됨\-> const 선언을 추가해서 코드의 안정성과 완성도를 조금 더 높였다.A
버전 0.4 에서 만들었던 은행계좌 관리 프로그램을 버전 0.5 로 업그레이드 시켜보자.프로그램 전체의 기능을 담당한다. 따라서 기능적 성격이 강한 클래스이다.컨트롤 클래스만 봐도 프로그램의 전체 기능과 흐름을 파악할 수 있다.반면, 컨트롤 클래스가 아닌 대부분의 클래
버전 0.5 에서 만들었던 은행계좌 관리 프로그램을 버전 0.6 으로 업그레이드 시켜보자.이전에 정의한 Account 클래스를 상속하는 다음 두 클래스를 추가로 정의하고자 한다.NormalAccount 보통예금계좌HighCreditAccount 신용신뢰계좌앞서 정의한
버전 0.7 에서는 파일 분할만 했으므로 생략. 버전 0.7 에서 만들었던 은행계좌 관리 프로그램을 버전 0.8 로 업그레이드 시켜보자. 프로젝트 08단계의 도입 Account 클래스는 깊은 복사를 진행하도록 복사 생성자가 정의되어 있다. 따라서 대입 연산자도 깊은
버전 0.8 에서 만들었던 은행계좌 관리 프로그램을 버전 0.9 로 업그레이드 시켜보자.경험이 부족하면, 자신이 정의한 클래스를 프로그램 전체에 적절히 적용하는데 어려움을 느낄 수 있다.따라서 클래스를 정의하는 것만큼은 아니지만, 자신이 정의한 클래스를 활용하는 데도
BoundCheckAccountPtrArray 클래스를 '클래스 템플릿' 으로 변경하려면 먼저 이름부터 바꿀 필요가 있다.따라서 다음의 형태로 파일과 클래스의 이름을 변경하겠다.클래스 템플릿의 이름을 BoundCheckArray 로 정의한다.클래스 템플릿을 BoundC
프로젝트 11단계의 도입 본 단계에서는 다음ㅇ의 예외상황에 대한 처리를 C++의 예외처리 기반으로 작용하고자 한다. 계좌개설 이후, 예금된 금액보다 더 많은 금액의 출금을 요구하는 예외상황 계좌개설 이후, 입출금 진행 시 프로그램 사용자로부터 0보다 작은 값이 입력되는
std::vector는 c/c++에서 지원하는 배열의 문제 중 하나인 고정 크기 문제를 해결한다. 배열의 경우 한번 정해지면 고정이라 수정하기가 어렵지만, 벡터는 동적 배열 구조 클래스이기 때문에 초기화 과정에 데이터의 크기를 제공하지 않아도 된다.장점마지막 위치에 추
List list 란 자료구조 중 하나로 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조다. 삽입과 삭제의 과정에서는 레퍼런스만 변경해주면 되므로 시간복잡도가 O(1)이다. 하지만 특정 위치에 있는 값을 찾거나 특정 값을
이진 탐색 트리는 루트 노드를 기준으로 왼쪽에는 작은 값을, 오른쪽에는 큰 값을 갖는 이진 트리의 한 종류이다. 모든 노드는 자신을 기준으로 왼쪽 자식값은 자신보다 작고, 오른쪽 자식값은 자신보다 큰 구조를 갖고 있다.이진 탐색(binary search) ✚ 연결 리스
C 스타일에 암시적 명시정 형변환은 컴파일시 타입에 대한 오류를 잡아내지 못한다. (추후 런타임에 에러가 남)static_cast<new_type>(expression)컴파일 타임에 형변환에 대한 타입을 변환논리적으로 변환 가능한 타입을 변환한다.그렇기 때문에 컴
typeid(변수이름).name()을 사용하면 '런타임'에 개체의 형식을 확인할 수 있다.자료형이나 변수 또는 식을 입력받아 const type_info& 형식의 객체를 반환해 주는 연산자name 멤버함수는 해당 자료형에 대한 문자열 표현을 const char\* 형태
일반적인 함수의 호출은 프로그램을 다른 주소(그 함수의 주소)로 점프 시켰다가, 함수의 처리가 종결되면 다시 원래의 자리로 돌아오는 것.그 작업을 자세히 살펴보자면프로그램이 함수 호출 명령에 도달했을 때, 그 함수 호출 명령 바로 다음에 있는 명령의 주소를 메모리에 저
directx 팀 프로젝트를 준비하는 과정에서 tool 담당을 맡게 됐고, 맵 에디터를 구현해보고자 리플렉션을 공부하기 시작했다.기본적으로 원하는 에디터 기능은 프로그램 실행중에 Imgui를 통해서 오브젝트를 배치하고 컴포넌트를 추가하거나 삭제해서 만들어진 씬을 저장하
템플릿으로 선언된 오버로딩 후보들을 살펴볼 때, 템플릿 인자들의 타입들을 유추한 후에 이로 치환하는 과정에서 말도 안되는 코드를 생산할 때가 있다.negate(42) 를 생각해보면, 컴파일러는 아마 첫 번째 오버로딩 후보를 택해서 -42를 리턴한다. 하지만 컴파일러가
사용할 DLL 을 만들기 위해서 먼저 프로젝트를 만든다.정말 간단한 사칙연산 정도만 만들어 볼 것이기에 불필요한 파일과 폴더는 전부 지우고 Math.h 를 만든다.이제 DLL을 빌드하면 .dll이 Debug 폴더안에 만들어 질텐데 이것만 있어서는 안된다.exe파일에 .