728x90

Programming Language/C,C++ 52

C++] 예외 및 예외 처리 기본

프로그램이 실행 중 오동작이나, 결과를 달리 하게 만드는 예상하지 못한 상황 발생을 예외(Exception)라고 하며, 이를 적절히 처리해주는 것을 예외 처리(Exception Handling)라고 한다. 대부분의 학교에서 처음 프로그래밍에 입문해서 코드를 짜기 시작하면, 기능적인 부분에 집중을 하고 책을 따라가기 때문에 이 예외에 대해서 고려할 일이 거의 없어서 이쪽 분야에 관심을 두지 않는 학생들을 졸업장을 받을 때까지 신경 쓰지 않는 경우도 간혹 있다. 만약 자신이 소프트웨어 분야에 관심이 많고, 그로 인해서 자신의 경험을 쌓고자 개인적인 프로젝트를 진행하거나, 학년이 올라 텀 프로젝트를 실시해서 그럴싸한 프로그램을 완성해야 하는 상황이 오게 되면, 예상하지 못한 곳에서 발생하는 문제들을 접하고 해..

C,C++] C++코드와 C 코드의 링크, Mangling 규칙

C언어는 다른 언어들에 비해(C++, Java 등) 역사가 길어 그동안 작성된 라이브러리, 소스가 많이 존재하며 이것들이 각기 다른 분야에서 활발히 사용되고 있다. 만일 C++ 프로그램을 개발할 때 기존에 작성된 C의 라이브러리, 소스를 사용하게 될 경우가 있는데 이때 C++ 프로그램에서 C 코드를 연결해 사용하는 방법을 알고 있다면 비교적 쉽게 다룰 수 있다. 서로 다른 언어를 연결하는 것은 쉬운 일은 아니지만, C++은 C의 내용들이 남아 있는 분들이 있어 상대적으로 쉬운 편이다. 모든 컴파일러가 목적 코드(obj)를 만들 때, 소스코드의 변수, 함수, 클래스 등의 이름을 변형해 저장한다. 이를Name Mangling(일부 책에서는 이를 이름 규칙이라고 하는데 표현이 애매해 사용하지 않겠다.)이라고 ..

C++] STL(Standard Template Library)이 무엇인가?

STL(Standard Template, Library;표준 템플릿 라이브러리)은 일반적인 대학생들은 접할 일이 거의 없다. 대학의 C++ 강의에서는 가르칠 수 없는 환경일 수밖에 없는 것이, C를 첫 프로그래밍 언어로 배우면서 반복문에서, 포인터에서 멘탈이 터지면서 흥미를 날린 상태로 어거지로 C++을 배우기 때문이라고 생각한다. 대학에서 사용하는 C++ 교재에서는 기본적으로 템플릿과 STL을 부록 형식으로라도 다루기 때문에 충분히 정보를 제공하고 있지만, C++에서 OOP(Object-Oriented Programming;객체 지향 프로그래밍) 개념을 다루는 것에만 초점을 두고 강의를 진행하는 경우가 많기 때문에 쳐다볼 일도 거의 없다. 덕분에(?) 대부분의 대학생들은 템플릿과 더불어 STL이라는 용..

C++] 명품 C++ 프로그래밍 9장 실습문제

개인적으로 C++을 공부할 때 작성해놓았던 코드들을 찾았다. 혼자 책을 사서 독학하던 시절에, 그리고 학부생 시절에 복습하면서 했던 문제들이라서 어떤 문제들은 깔끔히 잘 정리되어 있고, 어떤 문제들은 허접한 버그가 있을 수도 있다. 확인은 해뒀지만, 확인하지 못하거나 고려해야 할 버그, 오탈자 등은 댓글을 남겨주시라. 그간 공부한 것들을 정리하는 블로그이기 때문에 올려놓는다. 지금까지는 실습문제 문제 내용까지 적었지만, 귀찮기도 하고, 굳이 입력할 필요성은 느끼지 않아서 적지 않았다. 차후 게시물을 대대적으로 수정할 때면 추가될지도 모른다. 실습문제 1. #include #include using namespace std; class Converter { protected: double ratio; vi..

C++] 명품 C++ 프로그래밍 8장 실습문제

개인적으로 C++을 공부할 때 작성해놓았던 코드들을 찾았다. 혼자 책을 사서 독학하던 시절에, 그리고 학부생 시절에 복습하면서 했던 문제들이라서 어떤 문제들은 깔끔히 잘 정리되어 있고, 어떤 문제들은 허접한 버그가 있을 수도 있다. 확인은 해뒀지만, 확인하지 못하거나 고려해야 할 버그, 오탈자 등은 댓글을 남겨주시라. 그간 공부한 것들을 정리하는 블로그이기 때문에 올려놓는다. 지금까지는 실습문제 문제 내용까지 적었지만, 귀찮기도 하고, 굳이 입력할 필요성은 느끼지 않아서 적지 않았다. 차후 게시물을 대대적으로 수정할 때면 추가될지도 모른다. 실습문제 1. #include #include using namespace std; class Circle { int radius; public: Circle(int..

C++] 명품 C++ 프로그래밍 7장 실습문제

개인적으로 C++을 공부할 때 작성해놓았던 코드들을 찾았다.혼자 책을 사서 독학하던 시절에, 그리고 학부생 시절에 복습하면서 했던 문제들이라서어떤 문제들은 깔끔히 잘 정리되어 있고, 어떤 문제들은 허접한 버그가 있을 수도 있다.확인은 해뒀지만, 확인하지 못하거나 고려해야 할 버그, 오탈자 등은 댓글을 남겨주시라. 그간 공부한 것들을 정리하는 블로그이기 때문에 올려놓는다. 지금까지는 실습문제 문제 내용까지 적었지만, 귀찮기도 하고, 굳이 입력할 필요성은 느끼지 않아서 적지 않았다. 차후 게시물을 대대적으로 수정할 때면 추가될지도 모른다. 실습문제 1. #include #include using namespace std; class Book { string title; int price, pages; pub..

C++] 명품 C++ 프로그래밍 6장 실습문제

개인적으로 C++을 공부할 때 작성해놓았던 코드들을 찾았다.혼자 책을 사서 독학하던 시절에, 그리고 학부생 시절에 복습하면서 했던 문제들이라서어떤 문제들은 깔끔히 잘 정리되어 있고, 어떤 문제들은 허접한 버그가 있을 수도 있다.확인은 해뒀지만, 확인하지 못하거나 고려해야 할 버그, 오탈자 등은 댓글을 남겨주시라. 그간 공부한 것들을 정리하는 블로그이기 때문에 올려놓는다. 실습문제 1. add() 함수를 호출하는 main() 함수는 다음과 같다. add() 함수를 중복 작성하고, 프로그램을 완성하라. 디폴트 매개 변수를 가진 하나의 add() 함수를 작성하고 프로그램을 완성하라. #include using namespace std; /* 1 */ /* int add(int* arr1, int size) {..

C++] 명품 C++ 프로그래밍 5장 실습문제

개인적으로 C++을 공부할 때 작성해놓았던 코드들을 찾았다.혼자 책을 사서 독학하던 시절에, 그리고 학부생 시절에 복습하면서 했던 문제들이라서어떤 문제들은 깔끔히 잘 정리되어 있고, 어떤 문제들은 허접한 버그가 있을 수도 있다.확인은 해뒀지만, 확인하지 못하거나 고려해야 할 버그, 오탈자 등은 댓글을 남겨주시라. 그간 공부한 것들을 정리하는 블로그이기 때문에 올려놓는다. 실습문제 1. 두 개의 Circle 객체를 교환하는 swap() 함수를 '참조에 의한 호출'이 되도록 작성하고 호출하는 프로그램을 작성하라. #include using namespace std; void swap(int& a, int& b) { int tmp; tmp = a; a = b; b = tmp; } int main() { int..

C++] 명품 C++ 프로그래밍 4장 실습문제

개인적으로 C++을 공부할 때 작성해놓았던 코드들을 찾았다.혼자 책을 사서 독학하던 시절에, 그리고 학부생 시절에 복습하면서 했던 문제들이라서어떤 문제들은 깔끔히 잘 정리되어 있고, 어떤 문제들은 허접한 버그가 있을 수도 있다.확인은 해뒀지만, 확인하지 못하거나 고려해야 할 버그, 오탈자 등은 댓글을 남겨주시라. 그간 공부한 것들을 정리하는 블로그이기 때문에 올려놓는다. 실습문제 1. 다음은 색의 3요소인 red, green, blue로 색을 추상화한 Color 클래스를 선언하고 활용하는 코드이다. 빈칸을 채워라. red, green, blue는 0~255의 값만 가진다. #include using namespace std; class Color { int red, green, blue; public: ..

C++에서 구조체와 클래스 차이

최근까지 흔한 커리큘럼이 C를 배우고 C++로 넘어가는 과정이었다. 두 언어를 완전히 다르게 보는 시각에서 접근해서인지는 몰라도, C++에서 구조체와 클래스의 차이를 잘못 이해하고 있는 사람들이 여럿 있는 듯 하다. 특히 C에서의 struct를 가지고 와서 C++의 struct와 동일시하면서, C++에서는 struct는 무조건 금기시 되어야 하는 것으로 분류해 무조건 class를 쓰는 게 옳다고 생각하는 오개념을 가진 사람들도 있었다. C++에서의 struct와 class의 차이를 C의 struct와 C++의 class로 잘못 비교하고 있다는 것을 알지 못한 채로 개념이 굳어져 가는 사람들이 많은 것 같다. C++을 대하는 태도와 관심 정도에 따라 이럴 수 있다고 생각하기 때문에 이를 혼동한다고 해서 큰..

728x90