본문 바로가기

반응형

가상함수

(4)
[문과 코린이의 IT 기록장] C,C++ - 가상(virtual)의 원리와 다중상속 1 : 맴버함수와 가상함수의 동작원리 (객체 안에 정말로 맴버함수가 존재하는가?, 가상함수의 동작원리와 가상함수 테이블) [문과 코린이의 IT 기록장] C,C++ - 가상(virtual)의 원리와 다중상속 1 : 맴버함수와 가상함수의 동작원리 (객체 안에 정말로 맴버함수가 존재하는가?, 가상함수의 동작원리와 가상함수 테이블) 1. 객체 안에 정말로 맴버함수가 존재하는가? - 지금까지는 객체 내에 맴버함수가 존재한다고 설명했었다. 그러나 실제로는 객체 외부에 존재한다. ex ) C언어(구조체 변수와 전역함수)를 이용해, C++(클래스와 객체)를 흉내내보기 ex ) 이 예제를 C언어 스타일로 만들어보자. #include using namespace std; // 클래스 Data를 흉내낸 영역 typedef struct Data{ // 함수 포인터 변수가 구조체의 맴버로 등장했다. int data; void (*ShowData)..
[문과 코린이의 IT 기록장] C,C++ -상속과 다형성 3 : 가상 소멸자와 참조자의 참조 가능성 (가상 소멸자, 참조자의 참조 가능성) [문과 코린이의 IT 기록장] C,C++ -상속과 다형성 3 : 가상 소멸자와 참조자의 참조 가능성 (가상 소멸자, 참조자의 참조 가능성) 1. 가상 소멸자 - 가상함수 이외에도, virtual 키워드를 붙여줘야 할 대상이 있다. 바로 소멸자이다. - virtual로 선언된 소멸자를 가리켜, '가상 소멸자'라 한다. ex 1 ) 문제점 이해하기 #include #include using namespace std; class First{ // First 클래스 private: char * strOne; public: First(const char *str){ // First 생성자 strOne = new char[strlen(str)+1]; // 생성자 내부의 동적할당 } ~First(){ // First..
[문과 코린이의 IT 기록장] C,C++ - 상속과 다형성 2 : 가상함수 ( 기초 클래스의 포인터로 객체를 참조하기, 함수의 오버라이딩과 포인터 형, 가상함수(Virtual Function), 'OrangeMedia 급여관리 확장성 .. [문과 코린이의 IT 기록장] C,C++ - 상속과 다형성 2 : 가상함수 ( 기초 클래스의 포인터로 객체를 참조하기, 함수의 오버라이딩과 포인터 형, 가상함수(Virtual Function), 'OrangeMedia 급여관리 확장성 문제'의 주석 부분 해결, 순수 가상함수(Pure Virtual Function)와, 추상 클래스(Abstract Class), 다형성) 1. 기초 클래스의 포인터로 객체를 참조하기 ex 1 ) class Base{ public: void BaseFunc() { cout
[문과 코린이의 IT 기록장] C,C++ - 상속과 다형성 1 : 객체 포인터의 참조관계 (객체 포인터 변수 : 객체의 주소 값을 저장하는 포인터 변수, OrangeMedia 급여관리 확장성 문제의 1차적 해결과 함수 .. [문과 코린이의 IT 기록장] C,C++ - 상속과 다형성 1 : 객체 포인터의 참조관계 (객체 포인터 변수 : 객체의 주소 값을 저장하는 포인터 변수, OrangeMedia 급여관리 확장성 문제의 1차적 해결과 함수 오버라이딩) 1. 객체 포인터 변수 : 객체의 주소 값을 저장하는 포인터 변수 1) 객체 포인터 변수 이해 - 포인터 변수는 클래스를 기반으로도 작성될 수 있다. ex) Person : 클래스 이름 Person * ptr; // 포인터 변수 선언 ptr = new Person(); // 포인터 변수의 객체 참조 ( 위 문장이 실행되면, 포인터 변수 ptr은 Person 객체를 가리키게 된다. ) [ 여기서 꼭 알아야할 점 ] - Person형 포인터는 Person 객체뿐만 아니라, Pers..

반응형