본문 바로가기

2009/0226

클래스 멤버함수는 // virtual의 원리 // 다중상속 * 다시 봐야될듯.ㅠ -함수 포인터 - ○함수 포인터는 함수의 시작 지점의 주소를 포함하는 변수이다. ○프로그램을 컴파일할 때 프로그램에 있는 각 함수의 시작 지점을 생성하고 프로그램이 링크되면 함수가 참조될 때마다 호출되는 물리적 주소에 해당한다. ○시작 지점은 주소이기 때문에 포인터 변수가 포인터를 이용하여 함수를 호출하는 것이 가능하다. ○함수를 가리키는 변수를 만들기 위해서는 함수의 반환 형과 같은 형을 가지는 포인터를 선언하며, 이포인터는 어떠한 매개변수 보다도 앞에 선언해야 한다.. int (*p)(int a, int b) ; - *p 주위에 있는 괄호는 C의 우선 순위 규칙 때문에 반드시 필요하다. - 객체생성시 : 객체가 생성되면, 멤버 변수는 객체내에 존재한다. 그러나 멤버 함수는 메모리으 한 공간에 존재 하.. 2009. 2. 5.
순수(pure) 가상함수와 추상(abstract)클래스 virtual int GetPay()=0; 2009. 2. 4.
Static Binding & Dynamic Binding 1] 오버라이딩의 이해 BBB 객체 void AAA::fct(){..} void BBB::fct({..} 위 표와 같이 BBB 객체안에 AAA 클래스에 선언된 fct 와 BBB클래스에서 정의한 fct 함수가 잇다고 하자! 그리고 BBB클래스스의 fct함수는 AAA클래스를 가르키나다. 즉 AAA클래스가 base클래스이고 BBB 클래스가 Dervied클래스 이다./ BBB클래스의 fct함수가 AAA 클래스의 fct 함수를 가리킨다. 이처럼 Base클래스에 선언도니 형태의 함수를 Derived 클래스에서 다시 선언하는 현상을 가리켜 오버라이딩(overriding) 이라 한다. 이것을 실행하면 BBB클래스의 fct함수가 호출된다. 즉 오버라이딩은 이전에 정의된 함수를 가리는(hide) 특성을 지닌다고 할수 있다.. 2009. 2. 3.
상속된 객체와 참조의 관계 객체 레퍼런스: 객체를 참조할 수 있는 레퍼런스 AAA 클래스의 포인터(AAA*)는 "AAA 객체의 주소 값: 뿐만 아니라, "AAA 클래스를 상속하는 Derived 클래스 객체의 주소 값"도 저장이 가능하다. AAA클래스의 레퍼런스(AAA&)는 "AAA 객체" 뿐만 아니라, "AAA 클래스를 상속하는 Derived클래스의 객체"도 참조 가능하다. "AAA 클래스의 객체 포인터는 가리키는 대상이 어떠한 객체이건, AAA 클래스 타입 내에 선언된 멤버와 AAA 클래스가 상속한 클래스의 멤버에만 접근이 가능하다" -> "AAA 클래스의 레퍼런스는 참조하는 대상이 어떠한 객체이건, AAA 클래스 타입 내에 선언된 멤버와 AAA 클래스가 상속한 클래스의 멤버에만 접근이 가능하다." 2009. 2. 3.