본문 바로가기

728x90
728x90

C++

[C++][백준 11720][문자열] 숫자의 합 - 컴도리돌이 문제 N개의 숫자가 공백 없이 쓰일 때, 숫자를 모두 합해서 출력하는 프로그램을 작성 입력 값으로는 첫째줄에는 숫자의 개수 N과 둘째 줄에는 공백 없는 N개가 주어진다. N개의 합을 출력해라. 소스코드 #include #include using namespace std; int main(void) { int N = 0 ,sum = 0; string S; cin >> N >> S; for(int i=0; i 더보기
[C++] 예외 처리(Exception Handling) - 컴도리돌이 outline C++ Exceptions : Basics try, catch, and throw Matching Catch Handlers Uncaught Exceptions Cleaning Up Unwinding the stack C++ 예외처리 (C++ Exceptions : Basics) 예외 처리(Exception Handling)란 프로그램 실행 도중에 일어나는 비정상적인 상황이 벌어질 때, 이를 처리하는 과정을 말한다. #include using namespace std; double Division(int a, int b) { if (b == 0) {throw "Division by zero condition!";} return (a / (double) b); } int main () { i.. 더보기
[C++] 복사 생성자, 연산자 오버로딩(Copy Constructor, Operator Overloading)- 컴도리돌이 outline copy constructor friend, static Operator overloading 복사 생성자(Copy constructor) 같은 클래스의 다른 객체를 사용하여 또 다른 새로운 객체에 복사하여 생성한다. 복사 생성자(copy constructor)는 값을 가진 객체(object)를 반환할 때 사용되는데, 이때 또 다른 값을 가진 객체(object)를 변수(argument)를 받아서 copy를 해준다. ClassName(const ClassName& old_obj); class Point{ public: double x, y; // ... }; Point GetScaledPoint(double scale, Point p) { Point p_new; p_new.x = p.x*sc.. 더보기
[C++] 템플릿(Template) - 컴도리돌이 outline intro to Generic Programming Function Template Class Template STL templates and inheritance 일반화 프로그래밍(generic Programming) 일반화 프로그래밍은 알고리즘에서 매개변수로 제공되는 특정 유형(specific types)에 대해 필요할 때 인스턴스화(instantiated)하는 to-be-specified-later의 관점에서 작성된다. C++에서 template는 서로 다른 타입으로 인해 반복적으로 작성해야 하는 코드를 피하기 위해 사용된다. 즉, 타입에 대해 일반화 접근(Generic Approach)을 한다. 함수(functions)와 클래스(class)에서 template를 사용할 수 있다. t.. 더보기
[C++] 다형성(Polymorphism)-(1) - 컴도리돌이 outline Pointer, References and Inheritance Virtual Function Virtual Destructor Caution : Object Slicing C++에서 다형성(Polymorphism in C++) 같은 함수 호출에 대해 서로 다른 방법으로 응답을 하는 것을 객체지향에서 다형성이라 한다. 포인트, 주소 그리고 상속(Pointers, References and Inheritance) C++에서 다형성을 사용하기 전에, 상속에서 포인터와 주소 연산이 어떻게 사용되는지 이해가 필요하다. #include using namespace std; class Person { public: void Talk() { cout Talk(); student_st->Study(); .. 더보기
[C++] 상속(Inheritance) - 컴도리돌이 Outline Inheritance Overriding Constructor, Destructor & Inheritance Multiple Inheritance const & Class 상속(Inheritance) 부모 클래스(parent class)를 자식 클래스(child class)에 상속을 시키면 부모 클래스(parent class)의 private 값을 제외한 함수, 변수는 자식 클래스(child class)에서 사용이 가능하다. 상속받을 클래스의 이름 옆에 :와 접근 제한자, 그리고 상속할 클래스의 이름을 붙여주면 된다. 상속 : Is-a 관계( Inheritance : Is-a Relationship) "A가 B이다.(A is a B)"라는 관계가 형성될 때 상속을 사용할 수 있다. 예를 들.. 더보기
[C++] 이중 연결 리스트 (Double Linked List) - 컴도리돌이 template class Node { public: Node() {} Node(T value) : value(value) {} Node(T value, Node* next, Node* prev) : value(value), next(next), prev(prev) {} T value; Node* next; Node* prev; }; #include #include #include "double_linked_node.h" template class List { public: List() : count(0) { head = new Node(0, nullptr, nullptr); tail = new Node(0, nullptr, nullptr); head->next = tail; tail->prev = he.. 더보기
[C++] 연결리스트 (list.h , node.h , CMakeLists.txt)-컴도리돌이 우리는 간단한 linked list data 구조를 만들 것이다. 링크된 목록은 연결된 형태의 노드를 말하며, 각 노드가 다음 노드를 가리킨다. List 클래스는 head라고 불리는 특별한 노드를 가지고 있다. 다음 헤드 노드는 목록의 첫 번째 요소를 가리킨다. 목록의 첫 번째 요소 중 다음 요소는 목록의 두 번째 요소를 가리키며, 이러한 방식으로 nullptr(0x0)이 나타날 때까지 목록을 반복하여 반복적으로 반복할 수 있다. #include #include #include "node.h" template class List { public: List() : count(0) { head = new Node(0, nullptr); } ~List() { // TODO: write your code her.. 더보기