공학/C++8 가상함수 + 동적 바인딩 가상 함수 기본 클래스의 멤버 함수가 가상 함수라면기본 클래스의 포인터나 레퍼런스로 멤버 함수를 호출해도파생 클래스에 재정의된 멤버 함수 호출 가능 * 동적 바인딩 기본 클래스의 포인터나 레퍼런스로 가상 함수를 호출하면,기본 클래스 포인터나 레퍼런스가 어떤 클래스의 객체를 가리키는 지에 따라 호출될 함수 결정이처럼 실행 시간에 호출될 함수를 결정 하는 것 cf. 컴파일 시간에 호출될 함수를 미리 결정하는 것 -> 정적 바인딩 가상함수만 동적 바인딩으로 처리 * 순수 가상 함수함수 선언만 있고 정의는 없는 함수함수 선언 끝에 = 0 을 붙이면 됨 - 순수 가상 함수를 하나라도 가지면 추상 클래스 추상 클래스는 객체를 생성할 수 없음!!!! - 파생 클래스에서 재정의하도록 원형만 미리 준비하는 것 파생 클래.. 2014. 12. 1. 다중 상속 다중 상속둘 이상의 기본 클래스를 동시에 상속바든ㄴ 기능 다중 상속 할 때는기본 클래스마다 접근 변경자를 써줘야 함생략하면 private class Z : public X, public Y{public:void funcZ(){...}}; int main(){Z obj;obj.funcX() // class X로 부터 상속받은 멤버obj.funcY() // class Y로 부터 상속받은 멤버 ...} * 다중상속의 문제점- 이름 충돌 문제 멤버 변수의 이름이 같으면 어떤 클래스로부터 상속받은 멤버인지 알 수 없음 그래서 앞에 어떤 클래스로부터 상속 받은 멤버인지 표현해줘야함 obj.X::funcX(); - 중복 상속 여러 클래스를 다중 상속받는 클래스를 정의할 때, 각각의 기본 클래스가 같은 클래스를 상속 .. 2014. 12. 1. 클래스와 구조체 C에서는 구조체에 변수만 넣을 수 있었따 C++에서는 구조체에- 멤버 변수와 멤버 함수를 하나로 묶어서 정의 가능!!- 접근 권한도 설정 가능하고- 상속도 가능 클래스는 접근 지정자를 생략하면 private으로 간주하지만구조체는 public으로 간주 C++에서는 구조체의 기능을 클래스에서 제공 가능하므로 struct 키워드는 잘 안씀그래도 쓰는 이유는 C와의 호환성을 위해~ 멤버 변수들로만 구성되고, 모든 멤버가 public일 때 구조체로 정의해서 사용 객체지향 : 어떤 객체가 동작하는지가 중요절차지향 : 어떤 처리 함수를 수행하는지가 중요 + this멤버 함수 안에서 멤버 함수를 호출한 객체의 주소를 가리킬 때 출처 : C++ Programming with a WorkBook (이한출판사) 2014. 12. 1. 접근제어 접근제어!!!! 캡슐화 할 때 중요한 점은단순히 관련된 변수와 함수들을 묶는 것 뿐만 아니라묶어서 사용할 때 필요한 최소한의 정보만을 공개하고 나머지는 숨겨야 한다는 것 클래스의 멤버 변수, 멤버 함수에 대해 접근 권한을 설정하는 키워드가 접근 지정자 접근 지정자 해당 클래스 내 파생 클래스 내 클래스 밖 private O X X protected O O X public O O O 그래도 클래스 밖에서 protected나 private 멤버 변수에 접근해야 한다면?접근자 함수 사용!!public 접근 권한을 갖는 멤버 함수로, 클래스의 멤버 변수에 대한 접근을 도와주는 기능Get 함수 : 멤버 변수의 값을 읽어올 때 사용Set 함수 : 멤버 변수의 값을 변경할 때 사용 프렌드 함수??프렌드 함수를지정하면.. 2014. 12. 1. 이전 1 2 다음