728x90

CS/C++ 25

이동 의미론(move semantics)

https://jungwoong.tistory.com/20 [c++] Move semantics c++ 11에서 부터 지원되는 이동 연산자에 대해서 알아 봅시다. 우선 이동 연산자가 왜 필요하게 되었는지에 대해서 보기전에 lvalues와 rvalues에 대해서 알아 봅시다. Lvalues 와 Rvalues msdn에 설명되어 jungwoong.tistory.com 임시 객체에 대해서 깊은 복사를 해서 비효율적으로 처리하는 대신 move 키워드를 이용해 얕은 복사를 통해서 데이터를 이동시켜 효율적으로 작동하도록 하는 것

CS/C++ 2024.01.09

name mangling

extern C , 맹글링(function name mangling) : 네이버 블로그 (naver.com) extern C , 맹글링(function name mangling) [C++]extern C카테고리 : C++ 2007/03/20 00:01 C++ 프로그램내에서 C함수 ... blog.naver.com c++는 오버라이딩을 허용하기 때문에 함수 이름이 겹칠 수 있어 컴파일러가 임의로 함수나 변수의 이름을 변경하는 것 컴파일러마다 다른 맹글링규칙을 가지고 있음 필요성 ) C++는 C를 포함함. 그런데 만약 C 컴파일러로 컴파일된 오브젝트 파일이나 라이브러리만 C++에서 써야한다면 C함수를 사용하고자 한다면 그 함수의 원형을 C++ 코드에 선언시켜주고 C오브젝트 파일이나 라이브러리와 링크시켜서 C..

CS/C++ 2023.12.14

이동 의미론 ( move semantics)

C++11 부터 지원되는 이동연산자. * lvalue : 접근할 수 있는 주소를 가진 변수 - 이동연산을 할 수 없음 (이름이 있는 변수, 함수 int a, &foo() 선행 증감 연산자 ++a, --b lvaule배열의 인덱스 접근 l[n] string리터럴 "hello move sementics" 등등...) *prvalue: 접근을 할순 있지만 주소를 가지지 못한 표현식 -이동연산 가능 (리터럴 값 1,1.3f 후행 증감연산자 a++, b-- 값 리턴함수 호출 return str1 + str2; 비 참조 캐스팅 static_cast(x), (int)42 등등) *xvalue : 접근할 수 있는 주소를 가지지만 이동연산을 할 수 있음 rvalue참조를 리턴하는 함수 std::move(x) rvalue..

CS/C++ 2023.12.14

L value 와 R value

[C++] l-value, r-value : 네이버 블로그 (naver.com) [C++] l-value, r-value C언어에는 lvalue(left value), rvalue(right value) 라는 개념이 존재한다. 이 왼쪽 값, 오른쪽 값이란 ... blog.naver.com lvalue 표현식 이후에도 사라지지 않는 값. 이름을 지니는 변수. rvalue 표현식 이후에는 사라지는 값. 임시 변수. x+y 따위는 실제 변수가 아니라 임시 변수를 생성하여 (레지스터인지 메모리인지)에 저장, 사용한다. 이 값은 일반 변수와 마찬가지로 int 등의 타입을 가지고 있지만 계산이 끝나면 사라지는데 이것이 rvalue 이다. 그리고 명시적으로 선언하여 '이름'을 가지고, 계속 접근할 수 있는 변수가 바..

CS/C++ 2023.12.14

c++ typedef vs using 키워드 차이점

[c++] typedef 와 using의 차이점 (velog.io) [c++] typedef 와 using의 차이점 c++11 부터 사용할 수 있는 using키워드는 typedef 와 동일하게 type의 별칭을 만드는 키워드이다. 얼핏 사용하다 보면 같은 기능을 가진 것으로 보이지만 하나의 큰 차이점이 있다. 바로 template의 별칭 velog.io 공통점: 둘 다 type의 별칭을 만드는 키워드임 차이점: template의 별칭을 지정할 수 있느냐 없느냐의 차이임

CS/C++ 2023.12.14
728x90