C++/Class
2021. 3. 20. 17:28
다중 상속
여러 클래스에서 상속을 받을 수 있다.
#include <iostream> class USBDevice { int id_; public: USBDevice(int id_in) : id_(id_in) {} int getID() { return id_; } void plugAndPlay() {} }; class NetworkDevice { int id_; public: NetworkDevice(int id_in) : id_(id_in) {} int getID() { return id_; } void networking() {} }; class USBNetworkDevice : public USBDevice, public NetworkDevice { public: USBNetworkDevice(int usb_id, int net_id) : USBDevice(usb_id), NetworkDevice(net_id) {} USBNetworkDevice(int common_id) : USBDevice(common_id), NetworkDevice(common_id) {} }; int main() { using namespace std; USBNetworkDevice my_device(42, 1024); my_device.networking(); my_device.plugAndPlay(); cout << my_device.USBDevice::getID() << endl; cout << my_device.NetworkDevice::getID() << endl; } /* stdout 42 1024 */
다이아몬드 상속
같은 부모 클래스를 상속받은 두 개의 클래스들을 또 다시 다중 상속받은 손자 클래스의 형태를 다이아몬드 상속이라고 한다.
보기 드문 패턴인 듯하다.
다중 상속을 잘못 사용하면 문제가 발생할 수 있다고 한다.
'C++ > Class' 카테고리의 다른 글
C++ 다형성의 기본 개념 (0) | 2021.03.20 |
---|---|
C++ 다형성 (Polymorphism) (0) | 2021.03.20 |
C++ 상속받은 멤버의 접근 권한 변경 (0) | 2021.03.20 |
C++ 함수 오버라이딩 (0) | 2021.03.20 |
C++ 상속과 접근 지정자 (0) | 2021.03.20 |