스터디/C++55 [ C++ ] 임시객체로의 자동 형 변환과 형 변환 연산자(Conversion Operator) C++에서는 객체 간의 대입 연산을 허용한다. ( 객체의 자료형이 일치할 때만 대입 연산이 가능하다. ) 그럼, 객체와 정수간의 대입 연산도 가능할까? 가능하다. 그럼, 어떤 과정을 통해서 위의 결과가 나오는지 자세히 살펴보겠다. 자세히 보면 Num 생성자가 두번 일어난 것을 확인할 수 있다. 먼저 객체 n이 생성할 때 한번, Num n; 그리고 n = 20을 연산할 때 한번 일어난다. n = 20; 즉, 연산을 위해서 임시 객체가 생성된 것을 확인할 수 있는데, 좀 더 풀어보면 n = 20; n = Num(20); // 임시객체 생성 n.operator=(Num(20)); // 임시객체를 대상으로 하는 대입 연산자 호출 이런 과정을 가진 것을 확인할 수 있다. 그리고 이러한 임시 객체의 생성을 통해서 .. 2019. 11. 28. [ C++ ] << 와 >> 연산자 오버로딩 예제 2019. 11. 28. [ C++ ] 펑터(Functor), 함수 오브젝트(Function object) 함수처럼 동작하는 클래스를 펑터(Functor) 또는 함수 객체, 함수 오브젝트(Function Object)라고 한다. 예제를 보자. Adder처럼 함수처럼 동작하는 클래스를 펑터 또는 함수 오브젝트라고 불린다. 2019. 11. 28. [ C++ ] 스마트 포인터 ( Smart Pointer ) 스마트 포인터는 말 그대로 똑똑한 포인터라는 뜻이다. 사실 스마트 포인터는 객체인데, 포인터의 역할을 하는 객체를 뜻한다. 그럼 스마트 포인터란 무엇일까? 일단 포인터를 다시 살펴보자. 포인터는 메모리 주소를 저장하는 변수이다. 하지만 포인터는 단점이 있는데, 바로 new 연산자를 이용해서 동적 할당을 하게 되면 delete 연산자를 통해서 메모리 해제를 시켜줘야 한다는 점이다. ( 하지 않으면 메모리 누수가 발생한다. ) 이런 단점을 보완하여 생겨난 것이 스마트 포인터이다. 즉, delete 연산이 자동으로 일어난다는 점이다. 예제를 살펴보자 먼저 점에 대한 클래스이다. 연산자의 오버 로딩이 되어있다. 스마트 포인터는 포인터처럼 동작하는 객체이기 때문에, 두 연산자의 정의는 필수이다. 생성자의 인자로 .. 2019. 11. 28. 이전 1 2 3 4 5 6 7 8 ··· 14 다음