가상함수
페이지 정보
작성일 22-11-17 19:38
본문
Download : 가상함수.hwp
설명
순서
가상함수
Download : 가상함수.hwp( 90 )
레포트/기타
오버로딩과 오버라이딩 및 함수의 바인딩 등에 대해서 작성했습니다.가상함수 , 가상함수기타레포트 ,






오버로딩
오버라이딩
함수의 바인딩
정적 바인딩
동적 바인딩
동적 바인딩이 필요한 경우
가상 함수는 어떻게 동작하는가?
가상 소멸자(Virtual Destructor)
가상 복사 생성자(Virtual Copy Constructor)
함수의 바인딩 - 함수를 만들어서 컴파일하면, 각각의 코드가 기계어 명령어로 번역되어 메모리 상의 어딘가에 저장이 된다 그리고 이 함수를 호출하는 부분에는 이 함수가 위치한 메모리 번지가 저장된다
프로그램(program]) 을 실행하면, 次例로 명령어를 수행하다가 함수를 호출하는 부분을 만나면, 컴파일시 저장된 함수가 있는 메모리 번지로 점르를 해서 함수를 실행하고 원위치로 돌아온다. 호출한 함수를 컴파일할 때 함수 호출에 적절한 주소를 삽입하는 것이다.
동적 바인딩이 필요한 경우
class Base
{
public:
void Show();
}
void Base::Show() {
printf(`기반 클래스n“);
}
class Derived : public Base…(省略)
가상함수
,기타,레포트
오버로딩과 오버라이딩 및 함수의 바인딩 등에 대해서 작성했습니다.
다.
정적 바인딩 - 컴파일 할 때 호출될 함수로 점프할 번지가 결정되어 바인딩되는 것을 말한다.
이와 같이 함수를 호출하는 부분에 함수가 위치한 메모리 번지를 연결시켜 주는 일을 함수의 바인딩이라고 한다.
ex)
main()은 tripleIt()이라는 함수를 호출하고 tripleIt()은 prName()이라는 함수를 호출하다면, 프로그램(program]) 은 두 함수 호출의 실행을 위해 정적 바인딩을 사용한다.
단점 :
1) 프로그램(program]) 을 실행하는 동안 바인딩을 해야 하기 때문에 정적 바인딩을 하는 경우보다 수행 속도가 떨어지게 된다 (거의 무시할 수 있는 수준으로)
2) 바인딩에 필요한 포인터를 가지고 있어야 하므로, 정적 바인딩을 할 때는 필요 없는 메모리가 함수당 4바이트씩 더 필요하다.
프로그램(program]) 이 컴파일될 때 모든 주소들은 상대적이고, 그 주소들은 프로그램(program]) 이 실행될 때는 절대적이 된다
동적 바인딩 - 컴파일시는 호출될 함수로 점프할 번지를 결정하지 않고 빈칸으로 두었다가, 프로그램(program]) 실행시 점프할 번지를 바로 결정하여 함수를 실행하도록 하는 것을 말한다. 정적 바인딩은 함수의 상대적 주소가 컴파일 동안에 알려진다는 것을 의미한다.