본문 바로가기
728x90
반응형

C++59

[C++] 순수가상함수와 추상클래스 순수 가상함수 파생 클래스에서 재정의할 함수를 알려주는 역할 실행할 코드를 작성할 목적이 아니다. 코드가 없고 선언만 있는 가상 멤버 함수 virtual void draw()=0; 추상 클래스 최소한 하나의 순수 가상함수를 가진 클래스 온전한 클래스가 아니므로 객체 생성이 불가능하다. 애초에 파생클래스에서 재정의할 목적으로 염두해두고 만듦. 추상 클래스의 포인터는 선언 가능하다. 상속에서 기 +) 업캐스팅 자식 클래스의 객체가 부모 클래스 타입으로 형변환 Student s=new Student("홍길동") Person p=s; // 업캐스팅 2022. 12. 4.
[C++] 상속과 접근지정자 정리 class Base { int a; protected: void setA(int a) { this->a = a; } void showA() { cout protected , 나머지는 그대로. 단 원래 private 속성은 접근 불가.) 위 예제처럼 private 상속은 기반 클래스의 private 멤버는 파생 클래스에 접근 불가능하다. 근데 기반 클래스에서 public,protected 속성은 private 속성으로 변경되는데 이때는 파생클래스에서 private 속성으로 상속받았다는 뜻이므로 파생클래스 정의부에서는 접근이 가능. 즉 setA는 Derived에서는 접근이 되지만 GrandDrived에서 부터는 private으로 접근제어가 바뀌기 때문에 컴파일 에러가 뜨는 것. 가상함수랑 오버라이딩은 묶여서.. 2022. 12. 3.
[C++] 상속 기본 클래스의 속성과 기능을 파생 클래스에 물려주는 것 기본 클래스의 속성과 기능을 물려받고 자신 만의 속성과 기능 추가하여 작성 업캐스팅 파생 클래스 포인터가 기본 클래스 포인터에 치환 Point의 자식 클래스가 ColorPoint ColorPoint cp; ColorPoint *pDer=&cp; Point* pBase=pDer; //업캐스팅 다운 캐스팅 기본 클래스의 포인터가 파생클래스의 포인터에 치환되는 것 ColorPoint cp; ColorPoint *pDer; Point* pBase=&cp;//업캐스팅 -> 부모타입 변수에 자식타입 변수 대입 pDer=(ColorPont*)pBase;//다운캐스팅 -> 자식 타입 변수에 부모타입 변수 대입 상속 관계의 생성자와 소멸자 Q1. 파생 클래스의 객체.. 2022. 11. 15.
[C++] 프렌드와 연산자 오버로딩 프렌드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 #include #include using namespace std; // a=(1,2) b=(2,3) 일 때 a+b=(3,5) 라고 하는게 연산자 중복 //프렌드 // 클래스의 멤버가 아닌 외부 함수 // 프렌드 후보 -> 전역함수, 다른 클래스의 멤버함수 // 클래스의 모든 멤버 접근할 수 있는 권한부여 //왜? 다른 외부 함수인데 내.. 2022. 10. 31.
728x90
반응형