분류 전체보기
-
[C++] 다중 상속C++/이것이 C++이다 2021. 9. 24. 16:45
다중 상속은 한 클래스가 두 개 이상의 클래스를 동시에 상속받는 것을 의미합니다. 잘 사용한다면, 여러 클래스를 섞은 새로운 클래스를 쉽게 만들어 낼 수 있을 것 입니다. 하지만 그렇게 잘 사용하는 것 보다, 잘못될 가능성이 더 큰 기능이 다중 상속 입니다. 초기 개발 단계까지는 쉽고 빠른 길 처럼 보일 수 있지만, 이후에는 구조적 결함이 더 커질 확률이 높습니다. 이번 글에서는 다중 상속이 어떤 것이며, 왜 위험한 것인지를 중점으로 살펴 볼 것입니다. 1. 다중 상속 더보기 서론에 의하면, "그렇게 위험한 것이면 문법적으로 제한하면 되지 않는가?" 라는 질문이 나올 수 있습니다. 실제로 JAVA, C# 등의 다른 객체 지향적 프로그래밍 언어는 다중 상속을 문법적으로 제한하고 있기 때문입니다. 하지만 C..
-
[C++] 형 변환 연산자C++/이것이 C++이다 2021. 9. 19. 21:21
지난 글에서는 가상 함수에 관해 살펴보았습니다. C++과 객체 지향이라는 두 키워드를 같이 놓고 본다면, 가상 함수는 가장 중요한 내용 중 하나일 것 입니다. 그런 가상 함수의 무게를 줄이지 않기 위해 이번 글과 분리 해 놓았습니다. 이번 글에서는 C++에서 제공하는 형 변환 연산자에 대해 살펴 볼 것입니다. 1. 개요 더보기 형 변환 연산자는 이전 글(깊은 복사와 얕은 복사)에서 잠시 언급되었습니다. 다시 짚어보자면, C++의 형 변환 연산자는 4 종류가 존재합니다. const_cast static_cast dynamic_cast reinterpret_cast C언어의 강제 형 변환 연산자의 위험성과 불안정성을 해결하기 위해 C++에서 새로 정의된 4가지 형 변환 연산자입니다. 다음 문단에서 위 연산자..
-
[C++] 가상 함수C++/이것이 C++이다 2021. 9. 5. 15:38
가상 함수는 상속과 더불어 객체지향적 설계의 핵심적인 역할을 담당하는 문법입니다. 관점을 다르게 하면, 가상 함수를 사용해야 해결되는 문제도 있을 만큼 매우 중요한 문법입니다. 이번 글에서는, 가상 함수에 대해 다룹니다. 1. 개요 더보기 가상 함수 (Virtual Function)는 virtual 예약어를 붙인 메소드를 의미합니다. 가상 함수는 다음과 같이 선언됩니다. virtual [return type] [function] 예제를 통해 가상함수가 일반 함수와 어떻게 다른지 살펴보도록 하겠습니다. #include using namespace std; class MyClassAnc { public: virtual void print_virtual() { cout
-
[C++] 상속 기본C++/이것이 C++이다 2021. 8. 13. 14:18
상속이란 다음과 같이 정의됩니다. 상속 [명사]1. 뒤를 이음. 2. 일정한 친족 관계가 있는 사람 사이에서, 한 사람이 사망한 후에 다른 사람에게 재산에 대한 권리와 의무의 일체를 이어 주거나, 다른 사람이 사망한 사람으로부터 그 권리와 의무의 일체를 이어받는 일. 출처 : 표준국어대사전 객체지향 프로그래밍에서의 상속 또한 우리가 익히 알고 있는 상속과 의미가 일치합니다. 상위 객체의 뒤를 이어, 그 객체를 계승하고, 발전된 형태의 객체를 만드는 것을 상속이라 합니다. 얕게 보면 코드 재사용성을 문법 레벨에서 지원하는 것이 될 수 있으며 깊게 보면 객체지향적 설계에서, 객체 간 관계규정에 도움을 주는 요소로 볼 수 있겠습니다. 이번 글에서는, 이러한 상속의 기본적인 사용법에 대해 살펴 볼 것입니다. 1..
-
[C++] 연산자C++/이것이 C++이다 2021. 7. 16. 16:15
연산자는 우리가 잘 알고 있는 산술연산자 (+, -, ×, ÷) 논리연산자 (AND, OR... etc)를 의미합니다. 그리고 C++ 에서는 이러한 연산자를 함수 형태로 쓸 수 있는 연산자 함수를 제공합니다. 연산자 함수를 통해 함수를 오버로딩 하듯 연산자 오버로딩이 가능해지고 이것은 객체를 정의함에 있어서 고도의 일반화, 추상화로 이어집니다. 이번 글에서는 연산자 함수와 연산자 오버로딩에 대해 살펴 볼 것입니다. 1. 연산자 함수 더보기 연산자 함수는 말 그대로, 연산자를 사용하듯 호출하는 메소드를 의미합니다. 이전 글(깊은 복사와 얕은 복사)에서 살펴본 대입 연산자 또한 이에 속합니다. 클래스에 적용이 가능한 연산자 함수를 정의한다면 사용자는 더욱 편하게 클래스를 이용할 수 있습니다. 이것은 코드의 ..
-
[C++] 깊은 복사와 얕은 복사C++/이것이 C++이다 2021. 3. 30. 03:43
깊은 복사(Deep copy), 얕은 복사(Shallow copy)에 대한 개념은 값에 의한 호출(Call by value)와 참조에 의한 호출(Call by reference)와 깊은 관련이 있습니다. 대표적으로 전달받은 두 파라미터의 값을 바꾸는 Swap함수를 구현하는 예시가 있습니다. 본문에서는 해당 내용에 대한 기초적인 개념 즉, 볼드체 처리 된 네 용어에 대해 간략히 살펴본 후 그것이 객체지향적 관점에서 어떤 맹점이 되어 다가오는지 그리고 그것을 어떻게 다루어야 하는지 살펴 볼 예정입니다. 1. Swap함수 더보기 바로 예제부터 살펴보도록 하겠습니다. Example (깊은 복사, 값에 의한 호출) #include using namespace std; void deep_swap(int a, int..
-
[C++] Todo List?C++ 2021. 3. 23. 05:21
기초 글을 정리하다 보니, 기초에 들어가진 않지만 언급은 해야하는 내용들이 있었어요 그 부분들을 대부분 간략히 설명하거나 설명하지 않고, 추후 작성한다는 말만 써놨는데 앞으로 그런것들이 늘면 늘었지 줄지는 않을 것이고, 다른 카테고리의 글도 작성해야 할텐데 당장 머릿속에 떠오른 주제를 어딘가에 적어놓는게 좋지 않을까 생각해서 쓰는 글 입니다. [이것이 C++이다] 1. C와 C++ 더보기 입출력에 대하여 : printf, scanf에서 cin, cout을 사용했을 때의 성능 이슈 malloc과 new, free와 delete : 생성자와 소멸자 (작성 완료) 2. 함수 더보기 함수 오버로딩 : 오버로딩과 오버라이딩 인라인 함수 : 소스코드의 길이에 대한 오버헤드와, 함수 호출에 대한 오버헤드간의 관계 3..
-
[C++] 클래스 기본 문법 2C++/이것이 C++이다 2021. 3. 12. 04:48
이전 글에서는 클래스의 구성 요소에 대해 간단하게 살펴보았습니다. 이번 글도 이전 글에서 이어지는 내용입니다.... 만 기본 문법이라기엔, 몰라도 클래스를 정의하는데 문제는 생기지 않습니다. 다만, 객체지향의 관점에서 살펴볼 때 이슈가 될 수 있는 부분이 되지 않을까 합니다. 1. 상수형 메소드 (Const method) 더보기 상수형 메소드는 멤버 변수에 대해 읽기는 가능하지만 쓰기는 제한된 메소드를 의미합니다. 사용은 메소드 뒤에 'const' 예약어를 붙이는 것으로 사용할 수 있습니다. Example (Const method) #include #include class MyClass { public: int my_number; MyClass(int num) :my_number(num) { std::..