마이크로소프트 Visual Studio를 사용하면서 Visual C++를 사용하다보면 종종 새 헤더를 생성하면서 '#pragma once'라는 코드와 생성되는 것을 확인할 수 있다. 또, C 또는 C++ 헤더를 작성하면서 헤더가 중복돼서 포함되지 않도록 매크로를 사용하는 경우가 많..지 않고 모든 경우에서 사용한다. #ifndef __SOME_OF_HEADER_H #define __SOME_OF_HEADER_H // ... code ... #endif 매크로의 이름은 다양하게, 각자의 코딩 스타일에 맞게 작성하겠지만 이런 뉘앙스의 코드를 작성해서 중복된 헤더 포함을 피할 것이다. 하지만 이쁘지도 않고 vim같은 도구로 코드를 작성하는 사람들은 귀찮거나 보기 나쁜 코드가 될 수도 있다. 이를 한번에 해결해..
간혹 포인터의 주소 연산자 (&)를 이용하여 역참조 등을 할 일이 있다. 근데 절대 기억하지 못하는 특정 개체를 해제하지 않고 주소만으로 불러와야할 때도 있다. 어떤 값의 주소를 이용하여 역참조를 해보자. Foo.h class Foo { public: Foo(const int value); ~Foo(); int getValue(); private: int value; }; 우리가 잃어버릴 클래스다. value 변수는 생성자에서 설정한 value로 설정된다. Testsuite.cc #include <iostream> #include <cstdint> #include <sstream> #include <string> #include "Foo.h" int main() { Foo f..
C언어와 C++ 모두 공통적으로 포인터를 이용하여 프로그래밍이 가능하고 C++에서는 객체지향의 개념이 더해지면서 동적할당을 통해 객체를 관리할 수 있다. 간혹 C++에 관하여 찾다 보면 되도록 new를 이용하여 동적할당 하는 것을 피하라고 하는데 이유가 뭘까? class Foo { private: Bar bar; }; // End of scope 가령 이런 코드가 있다고 생각해보자. bar는 객체로써 사용될 수 있지만 포인터는 아니다. 이렇게 선언된 객체는 스코프가 종료되는 시점에서 자동으로 해제된다. 마치 GC처럼. 객체의 접근이 불가능 해지는 시점부터 해제되는 GC보다 오히려 좀 더 직관적인 해제 타이밍을 알 수 있다. C++이 포인터나 뭐나의 이유로 어렵다고 하는데, 생각보다 똑똑한 언어가 아닌가...
- Total
- Today
- Yesterday
- dokdo-project
- c++ struct
- Java
- nodeal
- g2 korea
- c++11
- rule_of_five
- C
- cyanogenmod
- rule_of_three
- linaro
- CM11
- OOP
- LG
- CM10.2
- vector
- dokdo 4.0.3
- d802
- inline class
- 포인터
- G2
- 객체지향
- C++
- PipelineContext
- dokdo project
- Kotlin
- f320k
- c++ 상속
- f320s
- C++ 업캐스팅
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |