클래스 타입 변환 연산자타입 변환 연산자 오버로딩을 통해 자기 자신의 타입을 다른 타입으로 변환소스코드#include using namespace std;class Point { int x; int y;public: explicit Point(int _x = 0, int _y = 0) : x(_x), y(_y) {} void Print() const { cout 코드 내용Point형 pt를 생성자 매개변수 2,3을 전달하여 생성.int형 n에 pt를 넣으면 타입변환 오버로딩 함수가 호출되어 this.pt의 x값만 반환되며 n에 들어가게됨.그 결과 n에는 pt의 2값이 들어갈 수 있어 결과적으로 2가 출력.실행 결과
타입 변환 연산자 오버로딩클래스에 각기 다른 타입으로 생성자를 오버로딩 하는 방식소스코드#include using namespace std;class A {};class B {public: /*B() { cout 코드 내용A 클래스 타입 a, int형 n, double형 d를 그리고 B클래스타입 b 총 4개를 미리 정의b에 각각 a, n, d에 대한 생성자로 할당해줌.B클래스에 있는 오버로딩된 생성자들을 통해 특정 타입을 인자로 받는 생성자 호출을 통한 타입 변환(객체 생성 후 대입)이 가능해짐!실행 결과
스마트 포인터C++에서 동적 메모리 할당과 누수를 관리하는 도구소스코드#include using namespace std;class Point { int x; int y;public: Point(int _x = 0, int _y = 0) : x(_x), y(_y) {} void print() const { cout () const { return ptr; } Point& operator*() const { return *ptr; }};void main() { Point* p1 = new Point(2, 3); //PointPtr은 스택 메모리에, Point는 힙 메모리에 적재됨! PointPtr p2 = new Point(5, 5); p1->print(); //p1->print() 호출 (*p1)...
클래스에 배열 인덱스를 적용시키게 하는 연산자 소스코드#include using namespace std;class Array { int* arr; int size; int capacity;public: //기본 생성자 cap매개변수 100을 받고 capacity를 100으로 초기화하여 arr크기를 100칸 할당하여 arr에 넣는다. Array(int cap = 100) : arr(0), size(0), capacity(cap) { arr = new int[capacity]; //arr[100] } ~Array() { delete[] arr; //동적 할당 해제 } void Add(int data) { if (size 코드내용1. Main함수에서 Array클래스 ar을 매개변수 10을 전달하여 10..
함수 호출 연산자 오버로딩( ()연산자 )객체를 함수처럼 동작하게 하는 연산자 소스코드#include using namespace std;struct FuncObject {public: void operator()(int arg) const { cout 코드 내용main함수 내 함수호출에 매개변수 갯수에 따라 오버로딩 하는 함수가 달라지는 것.암시적 호출은 함수를 간접적으로 호출하는 것이고명시적 호출은 함수를 직접적으로 호출하는 것이라 보면됨. 결과
문제한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다.이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다.이 편집기가 지원하는 명령어는 다음과 같다.L : 커서를 왼쪽으로 한 칸 옮김 (커서가 문장의 맨 앞이면 무시됨)D : 커서를 오른쪽으로 한 칸 옮김 (커서가 문장의 맨 뒤이면 무시됨)B : 커서 왼쪽에 있는 문자를 삭제함 (커서가 문장의 맨 앞이면 무..
문제'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다.게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다.뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. - 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. - 만약 벽이나 자기자신의 몸과 부딪히면 게임이 끝난다. - 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. - 만약 이동한 칸에 사과가 없다면, 몸길이를 ..
문제정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 여섯 가지이다.push X: 정수 X를 큐에 넣는 연산이다.pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 큐에 들어있는 정수의 개수를 출력한다.empty: 큐가 비어있으면 1, 아니면 0을 출력한다.front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.입력첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의..
문제여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다.여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다.1. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다.2. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한다.예를 들어 Queue에 4개의 문서(A B C D)가 있고, 중요도가 2..