목록전체 글 (156)
승쨩개발공부
함수 객체 함수처럼 사용할 수 있는 객체 -> 객체가 매개변수를 받는 것. 함수 호출 연산자 오버로딩을 통해 구현할 수 있다. 함수 객체를 통해 Sort구현
임시객체 임시 메모리 영역이 등록된 객체이다. 일반 객체는 자료형 + 변수명으로 선언한다. 임시 객체는 변수명이 없다. 일반 객체 -> 함수가 종료될 떄까지 메모리에 상주한다. 임시 객체 -> 코드 라인을 벗어나는 즉시 소멸한다.
연산자 오버로딩(operator) 함수 오버로딩의 규칙을 연산자에 적용하는 문법 연산자 오버로딩은 연산자의 좌측 객체 기준으로 호출한다.(멤버 함수와 같음) operator+ 구현 operator= 구현 객체 생성과 동시에 대입은 복자 생성자의 호출이다 객체 생성 후 대입은 대입 연산자의 호출이다. (디폴트 대입 연산자) 디폴트 대입 연산자 또한 구현한 내용처럼 단순 대입이다. 멤버로 동적할당한 주소를 가지는 변수가 있을 경우에는 깊은 복사 방식으로 구현을 하는 것이 좋다. operator 객체 + 정수 구현 연산자 오버로딩은 좌측 객체 기준으로 수행한다. -> 하지만 다음과 같은 경우에는 좌측에 객체가 있는 것이 아닐 경우 호출이 불가능하다. -> 이를 해결하기 위해서는 교환 법칙을 구현하면 된다. 교..
인라인 함수 메크로 함수의 장점을 취하고 단점을 보완한 함수 매크로(define)의 단점 1. 디버깅이 불가능하다. 2. 복잡한 함수 구현이 불가능하다. 인라인 함수가 일반 함수로 바뀌는 경우 1. 함수 포인터로 사용할 경우 2. 재귀 형태로 호출할 경우 3. 컴파일러 마음 -> inline 키워드가 있어도 컴파일러의 판단에 따라 일반함수가 될 수도 있고, -> 반대로 inline 키워드가 없어도 인라인 함수가 될 수도 있다. 인라인 함수의 주의사항 헤더파일에 함수의 정의부까지 구현해야 한다. -> 그런데 헤더파일에 함수의 정의부를 모두 구현할 경우 파일 분할의 목적이 사라지게 된다. -> 그렇기 때문에 한줄 짜리만 대부분 인라인을 사용한다. 전역 함수일 경우 파일 분할 시 주의사항과 중복된 내용이 있기..
바인딩 프로그램 구성 요소의 성격을 결정하는 것. 함수를 호출한다고 가정할 떄 호출 위치와 복귀 위치가 정해져 있다. 바인딩은 정적바인딩과 동적바인딩 두 가지가 존재한다. 1. 정적 바인딩 컴파일 시점에 바인딩이 결졍된다. 2. 동적 바인딩 컴파일 시점에 바인딩을 보류해두었다가 런타임 시점에 바인딩이 결정된다 일반 멤버 함수일 경우 정적 바인딩 -> 객체 타입 기준으로 함수를 호출하기 때문에 컴파일 시점에 어떤 함수를 호출할지 알 수 있다. 가상 함수일 경우 동적 바인딩 -> 가상 함수 포인터가 참조하는 가상 함수 테이블의 함수를 호출하기 때문에 컴파일 시점과 런타임 시점에 어떤 테이블을 참조하는지 알수 없다.