[C++] C++ 언어는 왜 사용하는 걸까
·
C++/문법 정리
C++의 장점1. 가상머신이 존재하지 않기때문에 메모리 최적화를 개발자가 직접 할 수 있다.2. C++로 작성한 프로그램은 가상머신을 거치지 않고 운영체제로 바로 실행이 되기때문에 속도가 빠르다. C++의 단점1. 메모리 관리를 직접 해야하므로 개발 속도가 C#에 비해 느리며, 실수할 여지가 많다.느낀 점C++과 C#의 차이를 모르고, 유니티와 언리얼을 활용하여 개발을 했습니다. C++과 C#의 특징을 알고나니 C++이 얼마나 우세한 언어인지 체감하는 것 같아요. C#을 사용하는 유니티 게임엔진 또한 C++로 개발되었다는 사실만으로도 개발자에게 C++은 필수 언어임을 인지하게 되는 것 같습니다.다만, 개발 속도가 중요한 상황에서는 C#이 우세하다고 하니 각각의 상황에 맞게 활용하면 좋을 것 같네요 !
[C++] STL 컨테이너 선택 가이드
·
C++/문법 정리
개요C++에서는 데이터를 효율적으로 저장하고 조작할 수 있도록 설계된 도구 모음인 STL (Standard Template Library)을 제공하고 있다. STL에는 vector, list, map ... 등 많은 요소들이 포함되어있다. 각자 어떤 상황에 유용하게 쓰이는지 알아보자 ! 1. 컨테이너 종류더보기① 순차 컨테이너vector, deque, list 원소를 순차적으로 저장하며 크기가 동적으로 조절됨vector : 연속된 메모리 할당으로 빠른 인덱스 접근deque : 앞뒤에서 삽입 / 삭제가 효율적list : 이중 연결 리스트 구조로 삽입 / 삭제에 최적화② 연관 컨테이너set, map, multiset, multimap키를 기준으로 정렬된 상태로 저장내부적으로 이진검색트리(Red-Black T..
[C++] 객체지향 프로그래밍의 개념
·
C++/문법 정리
개요C++을 공부하는 과정에서 객체지향을 접하게 되었다. 단어 그대로 해석해보면 객체를 활용하는 방식으로 프로그래밍을 하라는 의미인 것 같은데, 객체가 무엇인지 ! 객체를 활용하는 방법이 무엇인지 ! 한 번 알아보고자 정리하게 되었다.  1. 객체더보기객체는 실세계의 사물이나 개념을 프로그래밍적으로 모델링한 것이다. 객체는 상태(state)와 행동(behavior)을 가진다. 상태는 객체가 가지고 있는 데이터를 의미하며 속성, 필드로 정의되고, 행동은 이러 데이터를 다루는 메소드를 통해 이루어진다.2. 객체지향 프로그래밍더보기소프트웨어 개발의 한 접근 방식으로, 프로그램을 "객체"라는 독립적인 단위로 나누어 설계하고 개발하는 방법론이다. 객체지향과 함께 회자되는 절차지향이라는 개념도 있으니 둘의 차이점을..
[C++] Template의 사용법
·
C++/문법 정리
개요동일한 기능이지만 매개변수의 타입이 호환되지 않아서 중복 코드를 작성하는 경우가 있을 것이다. 오버로딩이라고 하는데 예를 들어, (정수) + (정수)로 함수를 구현했다가 (실수) + (실수)를 해야하는 경우에는 매개변수의 타입만 실수로 바꿔서 추가로 작성해야한다.C++에서는 이런 중복코드 작성을 방지하기위해 템플릿이라는 기능을 제공한다. 오늘은 템플릿이 무엇인지, 장단점은 무엇인지 알아보자 !1. 템플릿이란더보기더보기앞서 설명했듯, 중복코드 작성을 방지하기위해 C++에서 제공하는 기능이다. 템플릿으로 함수를 구현하면 컴파일러가 다양한 타입에 맞게 함수를 만들어준다고 한다. 때문에 템플릿을 활용하여 계산기를 구현하면, 매개변수로 정수를 넘겨주든, 실수를 넘겨주든 버그가 나지 않고 정상적으로 작동한다.사..
[C++] Dangling Pointer 대신 Smart Pointer 로
·
C++/문법 정리
개요댕글링 포인터 .. 이름 참 역동적이라 까먹진 못 할 것 같다. C++에서 포인터를 활용하여 구현을 하다보면 동적할당에 대한 개념을 접할 것이다. 동적할당을 통해 값을 참조하고, 그 값을 다른 포인터에서도 참조하는 구조라고 가정해보자. 둘 중 하나의 포인터를 delete한 상태에서 다른 포인터를 통해 참조하는 데이터에 접근을 해보면 -249218232 머시기 이상한 값을 얻게 될 것이다. 이런 상황을 Dangling Pointer라고 지칭하고, 이런 댕글링 포인터의 문제는 Smart Pointer로 해결할 수있다고 한다. 어떻게 해결할 수 있는 것인지 한 번 알아보자.1. Dangling Pointer더보기#include using namespace std;void func5() { int* p..
[C++] 오버로딩 vs 오버라이딩
·
C++/문법 정리
개요오버로딩과 오버라이딩의 구분없이 같은 의미를 가진 용어인줄 알았다. 은연중에 오버로딩과 오버라이딩이 다르다는 것을 깨닫고 어떤 차이점이 있는지 알아보게 되었다. 오늘은 오버로딩과 오버라이딩의 차이점을 알아보자 !1. 오버로딩더보기더보기동일한 이름의 함수를 여러 개 정의하지만, 매개변수의 타입이나 개수를 다르게 설정하여 다양한 방식으로 호출할 수 있게 만드는 기능이다.오버로딩의 특징1. 함수의 이름이 동일하다2. 같은 클래스 내에서 사용된다3. 매개변수의 타입, 개수, 순서가 다르다4. 컴파일 시간에 결정된다 (동적 바인딩)#include using namespace std;class Calculator {public: int add(int a, int b) { return a + b..
[C++] Class의 개념
·
C++/문법 정리
개요C++은 객체지향언어로서 데이터를 추상화하여 객체로 만들어 코드의 재사용성을 높이는데에 특화된 언어이다. 여기에는 Class라는 개념이 불가피한데 Class가 어떻게 쓰이는지 한 번 알아보자1. Class의 정의더보기더보기Class는 데이터와 이 데이터를 처리하는 함수를 하나로 묶은 사용자 정의 데이터 형식이다. 객체를 생성하기위한 틀로 사용된다.Class의 구성요소1. 멤버 변수2. 멤버 함수3. 생성자4. Getter, Setterclass Car {private: string brand; int speed; public: Car(string b, int s) { brand = b; speed = s; } void accelerate() {..
[C++] 참조와 포인터의 차이
·
C++/문법 정리
개요C언어를 공부하다보면 참조와 포인터에 대해 들어보게될텐데, 이 둘의 차이점이 명확히 구분이 가지 않을 것이다.친구가 나에게 "참조와 포인터의 차이가 뭐야 ?"라고 질문을 했을 때 나 또한 명확하고 시원하게 답변을 해주지 못 했다. 때문에 오늘은 참조와 포인터의 차이점에 대해 알아보고자 한다.1. 참조더보기참조는 C++에서 "변수에 대한 별칭"을 제공하는 기능이다.참조를 통해 기존 변수에 간접적으로 접근할 수 있으며, 참조자는 실제로 변수의 값을 저장하지 않고, 기존 변수의 메모리 주소를 사용하여 작업한다.참조의 특징1. 초기화 시 참조할 변수와 연결2. 별칭처럼 동작3. 다른 변수로 변경 불가4. NULL을 직접적으로 가리킬 수 없음1. 참조는 반드시 선언과 동시에 초기화되어야한다. 선언만 할 경우에..