분류 전체보기
업 캐스팅(Upcasting)과 다운캐스팅(Downcasting)
1. Upcasting과 Downcasting이란 무엇일까? Upcasting은 상속받은 자식 클래스를 부모클래스로 형변화 하는것을 말한다 Downcasting은 기본 클래스 포인터로 처리 할 수 있습니다. 이것은 업 캐스팅입니다. 간단하게 설명하면 이렇지만 단순히 다른 데이터 유형으로 변환한다고 생각하면 큰문제가 발생할수있다. 2. Upcasting 보시다시피 Manager(매니저)와 서기(Clerk)는 모두 직원(Employee)이고, 둘 다 사람(Person)이다. 이는 Manager 및 Clerk 클래스가 Person 클래스의 속성을 상속하는 Employee 클래스의 속성을 상속 함을 의미한다. 예를 들어, Manager 와 Clerk 모두 이름과 성으로 식별되고 급여가 있음을 지정할 필요가 ..
템플릿(Template) 개념정리
1. 템플릿(Template) 이란 무엇인가? 템플릿이란 데이터 타입을 정확히명시하지않고 클래스를 생성할때 데이터타입을 정하므로써 여러자료형마다 각각 오버로딩(overloading) 할필요없이 같은 역활을 하는 클래스, 메소드를 하나만 만들어서 다향한 데이터 타입을 사용하게하는 틀이다. 그렇기때문에 자료형대신 특수하게 약속된 키워드 (주로 한개일때는T 여러개일때는 T1,T2... 로 사용됨)을 사용한다. 템플릿은 크게 함수템플릿(method template)과 클래스 템플릿(class template)으로 나눠지는데 하는역활은 비슷하다. 2. 예제 템플릿을 사용하는곳은 많지만 대표적으로 사용하는 자료구조중 하나인 스택(stack)에서 사용하는 예제와 싱글톤패턴(singleton pattern)에서 사용하..
(자료구조) 배열 (Array)
1. Array 란? 배열은 동일한 타입을 가지는 변수들의 유한 집합이다. 배열을 선언하는 기본 형식은 다음과 같다. 일반 변수 선언문과 동일하되 변수명 뒤에 [ ] 괄호(bracket)와 배열 크기 지정문이 온다는 것만 다르다. 배열 선언문에 [ ] 괄호가 하나 있으면 1차원 배열이고 두 개 있으면 2차원 배열이라고 한다. 배열의 장점은 여러개의 변수를 만들필요없이 한개의 변수와 그에 해당하는 번호(index)만 알면 언제든지 해당값을 쓰거나 읽을수가 있다. 2. Array 의 구성 요소 배열은 크게 자료형(type), 크기(size), 이름(배열명), 원소(element)로 나눠진다. 배열의 선언은 다음과 같다. type 배열명[크기][크기]...; type은 어떤 타입의 변수들이 모여 있는지를 지정..
클래스 상속(inheritance) 이란?? (생성자,소멸자 접근 제어 지시자)
1. 상속(inheritance) 이란? 상속의 사전적의미 및 설명은 아래링크에서 가져왔습니다. http://tcpschool.com/cpp/cpp_inheritance_derivedClass 상속(inheritance)은 추상화, 캡슐화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나입니다. 상속은 사용자에게 높은 수준의 코드 재활용성을 제공하며, 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련합니다. C++에서 클래스 상속이란 기존에 정의되어 있는 클래스의 모든 멤버 변수와 멤버 함수를 물려받아, 새로운 클래스를 작성하는 것을 의미합니다. 이때 기존에 정의되어 있던 클래스를 기초 클래스(base class) 또는 부모 클래스(parent class), 상위 클래스(s..
void 포인터란?
1. void 포인터란 (사전적 의미)? - void 포인터는 const, volatile를 사용하여 선언되지 않은 객체를 포함한 모든 자료형 변수를 가리킬 수 있는 있다. - 가리키고 있는 변수의 자료형의 크기, 길이를 알아올 수 없을 뿐이다. 시작 주소를 제공 받아 쓸 수 있는 것이다. - 함수를 가리키는 주소값을 저장하여 함수형 포인터로 사용할 수 있다. - 다른 이름으로 제네릭 포인터(generic pointer)라고 불린다. - void 포인터는 자신이 가리키는 변수가 어떤 자료형인지 알지 못하기 때문에 직접 역참조를 할 수 없다. - 그러므로 void 포인터의 역참조를 수행하기 위해서 가리키고 있는 변수의 자료형으로 형 변환을 해야만 한다. - void 포인터의 포인터 연산도 역참조와 마찬가지..
포인터(pointer)와 함수포인터
1. 포인터(pointer) C언어에서 포인터(pointer)란 메모리의 주소값을 저장하는 변수이며, 포인터 변수라고도 부릅니다. char형 변수가 문자를 저장하고, int형 변수가 정수를 저장하는 것처럼 포인터는 주소값을 저장합니다. 비유 해서 설명해보자면 아래와 같습니다. 택배 아저씨가 하는 일 ! 고객의 주소를 저장하고 있다가 해당 주소로 물건을 전달하는 일 ! 고객의 주소를 저장하고 있다가 해당 주소로 물건을 받아가는 일 ! ‘우리에게 ‘간접 접근’ 서비스를 제공한다.’ 택배 아저씨가 있어서 우리가 편리한 점 물품을 수령하기 위해 직접 구매처를 방문 하지 않아도 된다. 반품을 위해 직접 구매처를 방문 하지 않아도 된다. 컴퓨팅 세계에서 택배 아저씨와 같은 일을 하는 변수 ! 포인터 변수 (포인터라..
슬라이딩 퍼즐 구현하기
1. 슬라이딩 퍼즐 규칙?? - 플레이어는 4x4판에 0부터 15까지 숫자가 랜덤한위치에 존재 - 플레이어는 0(여기서는 #으로 표시)을 위아래좌우로 움직여서 정렬하면 클리어 2. 사용된 키워드 - 중복되지 않는 난수발생기 - 셔플알고리즘 - 구조체를 매개변수로 넘길때 참조형으로 넘김 - 숫자판을 2차배열로 구현하여 위아래로 움직이기기 편해짐 - _getch를 이용해서 방향키 입력시 즉시이동하여 조금더 게임같아졌다. - 슬라이딩퍼즐은 마구잡이로 셔플시 풀수없는경우가 존재하기때문에 알고리즘을 이용하여 풀수있는지 확인한다. (https://natejin.tistory.com/22?category=1028752) 3. Git-Hub https://github.com/Natejin/CodeTest/tree/ma..
[HackerRank](c++) Repeated String
문제 : 반복되는 스트링에서 문자 a의 총 개수 구하기 - 문자열에는 a가 1부터 100개 미만의 숫자 만큼 존재한다 - 반복되는 문자열일때 n번쨰까지 a의 총 개수를 구하라. 풀이법 1. 하드코딩 ㅠ.ㅠ long repeatedString(string s, long n) { long temp = n / s.size(); long reminder = n % s.size(); long count = 0; long answer = 0; for (size_t i = 0; i < s.size(); i++) { if (reminder == i + 1) { answer += count; } if (s[i] == 'a') { count++; } } return answer + temp * count; } 풀이법 2...