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은 어떤 변수도 담고 있지 않은 숫자..
요약 상속 관계의 경우 -> 오버라이딩 파라미터만 다른 경우 -> 오버로딩 개요 오버로딩과 오버라이드는 프로그래밍을 하다보면 아마 평생동안 만나게 되는 단어일 것이다. 두 영단어가 비슷해서 의미를 설명하고 맞는 단어를 선택하려고 하면 헷갈리는 경우가 종종 마주하게 된다. 이번 포스팅을 통해 오버로딩과 오버라이딩를 이해하고 내가 쓰는 여러가지 암기법들을 전해주고자 한다. 의미 Overloading 프로그램을 작성하다보면 같은 이름의 함수를 작성 할 수 없다는 것을 알 수 있다. 그 이유는 호출한 함수가 어떤 함수인지 컴파일러가 구분 할 수 없기 때문이다. 그렇지만 같은 함수를 작성해야하는 경우가 존재 할 수 있다. 몇가지 방법들이 있는데 그 중 하나가 namespace를 이용하는 것이다. 2019/04/2..
해바라기를 키운지 벌써 10일이 되었다. 해바라기가 아주 잘 자라고 있어 또다른 식물을 키우고 싶어졌다. 여러 식물들 중에서 해바라기만큼 빨리 자라고 식재료로도 쓸 수 있는 바질을 선택하게 되었다. 바질에 물을 주는 방법은 해바라기와 같이 주었다. 2019/05/03 - [식물기르기] - [해바라기] 5일차 [해바라기] 5일차 2019년 4월 28일 다이소에서 식물기르기 키트를 발견하였다. 그중에서도 예쁜 해바라기를 골랐다. 4일이 지난 5월 2일 퇴근하고 보니 씨앗 2개 중에서 1개가 발아했다! 해바라기를 직접 기르면서 내가 키운 방법.. pppgod.tistory.com 발아시기 바질의 발아시기는 1주일에서 2주정도 걸린다고 하는데 나 같은 경우는 해바라기와 같이 5일만에 발아를 하였다. 5일차 5일..
2019년 4월 28일 다이소에서 식물기르기 키트를 발견하였다. 그중에서도 예쁜 해바라기를 골랐다. 4일이 지난 5월 2일 퇴근하고 보니 씨앗 2개 중에서 1개가 발아했다! 해바라기를 직접 기르면서 내가 키운 방법도 포스팅하도록 하겠다. 해바라기 기르기 물주기 식물을 기를때 가장 기본이면서도 어려운 부분이 물주기라고 한다. 여러 정보들을 수집해본 결과 물주는 방법은 다음과 같다. 식물에 물을 줄 때는 자주 주는것이 아니라 한 번 줄때 많이 준다. 흙을 만져보고 수분이 부족해 보일 때 준다. 물을 주는 양은 화분 받침에 물이 나올정도로 주고 흘러나온 물은 버린다. 물은 가능하면 아침에 준다. 위의 조건에 맞춰 물을 주었는데 이틀에 한 번 물을 주었다. 물의 양은 흙에 수분기가 꽤 있어 많이주지는 않았다. ..
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
- std::move
- C++
- forward
- 보편 참조
- std::forward
- 보편참조
- Perfect
- const
- 발아시기
- 람다
- Effective
- Join
- C++14
- 포인터
- Effective Modern C++
- MOVE
- Forwarding
- Future
- 다이소
- Modern
- thread
- auto
- Unreal
- C
- Override
- CPP
- detach
- C++11
- Overloading
- async
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |