본문 바로가기

C++

c++] lambda 표현식을 차근차근 써보자(수정...) (3) lambda 표현식 기본적인 틀 : [capture](params)->return_type{body}(params)의미는 [ 이 람다표현식을 포함한 중괄호 내에서 끌어올 변수가 무엇인가요 ]( parameter들의 자료형은 무엇이고 얼마나 더 있나요 )->( 리턴타입은 무엇입니까 ){ capture한 변수를 갖고 무엇을 할 것인가요 }( 실제 파라미터들은 무엇입니까 )라는 의미가 된다. 차근차근 사용해보자. "Hello lambda"[](){ cout
c++] 레퍼런스와 연산자 오버로딩(2) (2) Operator Overloading임의의 struct나 class를 사용할 때 operator를 써야할 상황이 있다. 예를 들어struct Node {int a;int c;};Node a = {2,3};Node b = {2,3};Node c; 이 있다고 하자. 이 때, 'a와 b가 같은 것인가?' 와 'c에 a의 값을 저장하고 싶다' 두 상황을 '=='과 '='으로 표현하고 싶다.이를 연산자 오버로딩을 통해 구현 해보자. struct Node{int a;int b;bool operator==(const Node& input){return (a == input.a) && (b == input.b);}Node& operator=(const Node& input) //operator"표현식"(표현식의..
c++] 레퍼런스와 연산자 오버로딩(1) (1) Reference a라는 이름의 공간에 10을 저장하겠다!. 그런데 a의 공간을 다르게 부를 수 있는 방법이 없을까?int &b = a를 통해 a가 가리키는 공간을 b라고도 불러보자! 배열은 어떻게 접근할까?그렇다면, int *a = new int[5]일때(int a[5]은 reference로 참조 할 수 없다), a의 reference인 b를 호출하고자 할 때, 어떻게 선언해야 하는가?int* &b = a가 된다. 이는 포인터의 reference 의미로 a를 b라고도 부르겠다는 것은 변함이 없다. 함수의 arg에서는 어떻게 쓰이나?함수의 인자로 배열에 대한 정보를 넘길 때는 call-by-value 값으로 보내는 경우는 대부분 없다. 메모리 복사가 일어나기 때문이다.이를 대체하고자 일반적으로 배..