c,c++/c++ 관련 개념 및 문법(11)
-
함수 포인터
int add(int n1, int n2) { return n1 + n2; } add함수에 대한 주소를 저장하여 이용할 수 있다. int (*p)(int,int); // 함수 포인터 선언 p = &add; int value = (*p)(3,4); int add(int n, int b) { return n + b; } int main() { int (*p) (int, int); p = &add; cout
2023.07.09 -
nested class, types..
c++ 에서 내포 클래스를 이용해보자 #include using namespace std; class A { public: enum class DAYS { MONDAY, TUESDAY, WEDNESDAY }; struct InnerStruct{}; class InnerClass{}; private: DAYS m_day; public: A(DAYS day) : m_day(day) {} DAYS getDay() { return m_day; } }; int main() { A today(A::DAYS::MONDAY); cout
2023.07.09 -
l-value, r-value
l-value(왼값)와 r-value(오른값)는 C++에서 표현식(expression)을 구성하는 토큰(token) 중 하나로, 변수나 객체, 그리고 리터럴 상수 등이 해당됩니다. l-value는 메모리에 저장된 데이터에 대한 주소값으로서, 변수, 배열, 구조체 등의 이름, 객체의 멤버 등이 해당됩니다. 쉽게 말해 l-value는 주소값이 존재하며, 해당 주소값을 참조할 수 있는 식별자를 뜻합니다. 예를 들어, "a = b"와 같은 코드에서 "a"와 "b"는 l-value입니다. r-value는 값을 나타내며, 변수나 객체가 아니라 상수, 리터럴 값, 값에 대한 계산식 등이 해당됩니다. 쉽게 말해, r-value는 주소값이 아니라 값 그 자체를 뜻합니다. 예를 들어, "a = 1 + 2"와 같은 코드에서..
2023.07.09 -
익명 객체
익명객체는 단순한 함수 하나만 이용하는 클래스가 있을 경우 쓰고 버리는 느낌으로 이용하는 객체를 쓸 때 이용한다. 익명객체는 생성 후 하나의 함수 실행 후 쓰지 않는 일회성이기 때문에 소멸자와 같이 이용한다. 그래서 매번 다른 주소를 갖는 수행을 하게 된다. #include using namespace std; class A { public: int m_value; A(const int& input) :m_value(input) { cout
2023.07.09 -
static 관련 정리
static은 한번 메모리가 선언되면 data영역에 저장되며 이것은 프로그램과 lifetime을 같이 한다는 것을 알 수 있다. 함수가 여러 번 호출되어도 이미 존재하는 영역에 접근하여 처리를 해주므로 메모리 측면에서 효율적이다. 즉 값이 보존되며 계속해서 쓸 수 있다. coroutines의 구현에 도움이 된다. coroutine이란 기존의 caller callee구조인 함수를 한번 호출하면 stack에 올려서 return을 받아오는 구조에서 caller와 coroutine 사이에서 만약 coroutine에서 suspend를 한다면 현재 coroutine state를 heap영역에 저장하여 보관해뒀다가 caller에서 resume을 하게 되면 heap에서 저장된 state를 가져와서 다시 coroutin..
2023.07.09