c++(3)
-
lvalue와 rvalue, 그리고 참조자
왜 참조자를 사용하는가? 객체를 복사하지 않고 주소만 가져와 참조하기 위해서다. lvalue와 rvalue의 정의 lvalue는 left-value, 또는 locator-value로 불린다. 왜냐하면 메모리 주소를 얻을 수 있기 때문이고, 값을 할당받을 수 있는 등호 왼쪽 편에 있는 것이기 때문이다. rvalue는 right-value다. 값 자체를 말한다. 등호에서 오른쪽에 위치하면 그것을 rvalue라고 볼 수 있다. 하지만 늘 lvalue와 rvalue가 고정되어 있는 것은 아니다. int a = 10 // a는 lvalue, 10은 rvalue int b = a // b는 lvalue, a는 rvalue 위 과정에서 rvalue로써 사용된 a는 컴파일 타임에 10으로 치환된다. lvalue 참조자..
2022.07.23 -
C++ 람다 Lambda 함수와 Capture 구문
캡처의 개념 캡처의 역할은 본문에서 사용하는 외부 변수에 대해 그 사용 방식을 변수명에 묵시적으로 정하거나 새 이름으로 명명하여 명시적으로 사용 방식을 정하는 것 이다. 캡처의 작동은, 실행이 아닌 오직 캡처 선언문에서 지정한 것들이 캡처 선언문 내에서만 바로 쓰여짐에 따라 실행되어지는 순서에 관계 없이 그 람다 선언과 동시에 캡처 선언문 내 외부 변수 값이 산술 연산 또는 대입이 된다. 람다의 사용 C++에서 람다를 사용할때 Capture 구문을 맨 앞, 그 뒤 매개변수, 마지막으로 화살표와 함께 반환 타입을 명시 해주면 된다. auto f = []()->void {}; 이러한 캡처 구문은 아래 2개 정도로 나눠 볼 수 있다. auto callByValue = [=]()->void {}; auto ca..
2021.07.10 -
OpenGL과 GLFW, GLEW 설명과 마름모 생성 튜토리얼
OpenGL과 GLFW, GLEW 설명과 마름모 생성 튜토리얼 #include #include #include //OpenGL 확장팩 #include #include using namespace glm; GLFWwindow* window; void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { if (key == GLFW_KEY_E && action == GLFW_PRESS) { printf("E Pressed\n"); } if (key == GLFW_KEY_Q && action == GLFW_RELEASE) { printf("Q Released\n"); } } int main() { // Initialise..
2020.08.11