C++에서 struct와 class는 사실 거의 차이가 없다. struct에서도 생성자와 소멸자를 만들 수 있으며, 멤버 함수 또한 구현이 가능하다. 몇가지 차이가 있는데 그 차이는 다음과 같다. public과 private, protected 없다. 대입연산자가 구현되어있다. 이동생성자를 구현하지 않아도 된다. 1. public과 private이 없다. 아마 가장 큰 차이점이지 않나 싶다. class는 private, protected를 통해 외부에서의 접근을 막는다. 하지만 struct는 모두 public이나 다름이 없기 때문에 외부 접근을 막을 수 없다. 2. 대입연산자가 구현되어있다. 대입연산자란 기호 = 을 말한다. class의 경우에는 연산자 오버로딩을 통해 구현해주어야 하지만 struct는 ..
C++11에서 가장 큰 변화라하면 move semantics이라 말할 수 있다. move semantic은 r-value(오른값)에 근거해서 사용한다. 하지만 대학교를 이제 졸업해 c++11을 처음 접하게 되면 전혀 와닿지가 않는다. 이렇게 move를 처음 접하는 독자들을 위해 해당 포스트에서는 move를 이해하는데 초점을 맞출것이다. 정의 r-value r-value 오른값은 말 그대로 오른쪽에 있는 값을 의미한다. 오른값의 반대는 왼값이다. a = 10; 위에 a = 10에서 왼값은 a이고 오른값은 10이다. 둘의 차이점을 살펴보면 왼값의 경우는 소멸시키기전까지는 사라지지 않는다. 반면에 오른값은 a에게 10을 할당하고 사라지게 된다. 오른값이 사라지는 이유는 10은 어떤 변수도 담고 있지 않은 숫자..
C++을 사용할때 가장 실수하기 쉬운 부분이 바로 memory leak 이다. memory leak 은 즉시 알아채기 어렵고 메모리가 부족하다는 것을 깨달아도 어떤 코드에서 memory leak 이 발생하는지 찾기가 쉽지 않다. 미리 예방하는 것이 최선이며 이때 알아야할 가장 중요한 부분이 바로 소멸조건이다. 이 소멸조건은 포인터를 사용하는 변수와 포인터를 사용하지 않는 변수가 다르다는 것을 주의해야한다. 해당 포스트에서는 지역변수와 멤버변수를 위주로 다루도록 하겠다. 일반 변수 먼저 포인터를 사용하지 않고 선언한 일반 변수의 소멸조건을 알아보도록 하겠다. 소멸조건은 다음과 같다. 블록을 벗어나는 경우 새로 변수를 할당하는 경우 두번째 조건은 아주 쉽다. MyClass myClass; MyClass ne..
Microsoft에서는 namespace 를 다음과 같이 정의한다. 네임스페이스는 내부 식별자(형식, 함수, 변수 등의 이름)에 범위를 제공하는 선언적 영역입니다. 책에서도 위와 같이 정의하는 경우가 많은데 글은 이해가 되나 실제 코드를 읽을 때는 잘 이해가 되지 않는다. C++을 처음 접하게 되면 using namespace std 를 접하게 될 것이다. 하나하나 살펴보도록 하자. 사용 방법 선언 namespace 를 선언하는 방법은 다음과 같다. namespace std { ... } 위의 코드의 의미는 std라는 namespace를 생성하겠다는 의미이다. 우리가 자주 사용하는 using namespace std 위와 같이 선언되어 있을것이다. 그리고 블럭 안에 클래스나 함수, 변수 등이 선언하면 된..
- Total
- Today
- Yesterday
- Modern
- C++
- Unreal
- CPP
- C++11
- Override
- 람다
- 다이소
- detach
- thread
- std::forward
- 발아시기
- 보편참조
- 보편 참조
- std::move
- auto
- forward
- Perfect
- Forwarding
- Future
- Effective
- C
- const
- MOVE
- async
- Join
- 포인터
- Effective Modern C++
- Overloading
- C++14
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |