C++
-
[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::..
-
[C++] 클래스 기본 문법 1C++/이것이 C++이다 2021. 2. 27. 01:55
이전 글에서 클래스가 어떤 아이디어에서 도입되었는지 살펴보았습니다. 객체지향 이라는 개념이 도입된 원인은 여러가지가 있겠지만 이전 글에서 집중했던 내용은 크게 두가지 입니다. - 개발자와 사용자의 분리 - 소스코드의 유지보수성 위의 두 내용과 본문의 내용에 대한 관련성이 잘 보이지 않을 수 있습니다. 자세한 내용은 이후에 다룰 객체지향의 패러다임에서 다룰 수 있도록 하겠습니다. 이번 글은 클래스를 사용하는데 필요한 기본 문법에 대한 내용입니다. 1. 클래스 구성요소 더보기 클래스는 다음과 같은 요소로 구성됩니다. class [Class Name] { [Access Modifier]: [Member Variable]; [Member Function]; } [Class Name] : 클래스의 이름 [Acce..
-
[C++] 클래스를 살펴보기 전에C++/이것이 C++이다 2021. 2. 27. 01:36
C++이 C와 다른 것은 여러가지가 있지만 소소한 문법적인 요소를 제외하고 거시적으로 살펴본다면 '객체지향' 이라는 요소가 가장 두드러질 것 입니다. 본 글에서는 C++의 객체지향 구현 요소인 클래스를 살펴보기 전에 어떤 아이디어에서 객체지향이 등장했는지 단편적으로 살펴보도록 하겠습니다. 1. 구조체 더보기 예제를 먼저 보도록 하겠습니다. 이하 예제는 이름과 나이를 유저 데이터로 묶기 위해 구조체를 사용 한 예제입니다. Example (Struct) #include typedef struct User { int age; char name[24]; }User; int main() { User user = { 10, "Lee" }; printf("Age : %d\nName : %s\n", user.age, ..
-
[C++] 네임스페이스C++/이것이 C++이다 2021. 2. 12. 00:05
네임스페이스란 C++의 각종 요소 (클래스, 함수, 변수)를 일정 [구역]으로 묶어주는 문법입니다. 네임스페이스를 이용하게 되면 자칫 중복될 수 있는 클래스, 함수, 변수의 이름들을 소속 네임스페이스라는 한단계 더 높은 그룹화가 가능해지므로 규모의 프로젝트에서의 협업이 한층 더 용이해질 수 있습니다. 1. 네임스페이스 더보기 네임스페이스란 클래스, 함수, 변수에 소속을 지정해주는 문법입니다. #include namespace Sample{ int sample_data = 10; void function(){ std::cout
-
[C++] 함수 기본C++/이것이 C++이다 2021. 2. 12. 00:02
프로그래밍 언어에서 함수는 수학적인 함수의 기본적인 의미와 어느정도 일맥상통 합니다. 임의의 원소 (입력값)에 대하여, 특정하게 대응하는 원소 (출력값)이 존재하는 개념을 함수라 합니다. 이번 글에서는 C++에서의 함수의 여러가지 부분을 살펴 볼 것입니다. 1. 디폴트 파라미터 더보기 함수의 파라미터에 대하여, 그 파라미터에 대한 '기본 값' 을 설정할 수 있습니다. 다만, 디폴트 파라미터의 설정은 다음과 같은 규칙을 만족해야 합니다. 1. 디폴트 파라미터는 반드시 오른쪽부터 기술해야 한다. 2. 파라미터가 여러개일 경우 디폴트 파라미터 설정시, 그 오른쪽에 있는 모든 파라미터에 기본 값을 기술해야 한다. 3. 함수 호출시, 파라미터는 왼쪽부터 순서대로 입력되며 입력되지 않은 파라미터에 대하여 디폴트 파..
-
[C++] C와 C++C++/이것이 C++이다 2021. 1. 29. 17:18
C++는 C를 기반으로 만들어졌지만 절차지향인 C와는 달리, 객체지향의 요소를 도입했습니다. 또한 C에 '++'가 붙은만큼, C의 여러 요소를 개선, 변경한 부분이 있는데 이번 글에서는 그러한 변경점 중 간단한 몇 가지를 살펴보도록 하겠습니다. 1. 자료형에 대하여 더보기 C++의 정수형의 int, long 실수형의 float, double 등, 기본 자료형은 C와 C++, 그 외 다른 프로그래밍 언어와 유사합니다. 하지만 C++은 C에서 추가된 몇 개의 자료형이 있는데 bool, auto, decltype 등의 자료형이 바로 그것입니다. bool은 true, false의 논리적 참 거짓을 값으로 가질 수 있는 변수 auto는 컴파일러가 형식을 규정하는 변수 decltype은 declared type의 ..