class Base {
public:
void common() {}
protected:
int data_;
};
class Derived : public Base { // 訪問控制關鍵字
public:
void extra() {}
};
class Sensor { virtual void read() = 0; };
class Network { virtual void send() = 0; };
class SmartDevice : public Sensor, public Network {
void read() override { /* ... */ }
void send() override { /* ... */ }
};
優點:直接組合多個介面能力,無需介面+委託樣板代碼。
挑戰:
class A { int x; };
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {}; // D 中只有一份 A::x
class A { public: A(int) {} };
class B : public A { public: B(int a, int b) : A(a), b_(b) {} private: int b_; };
class C : public B { public: C(int a, int b, int c) : B(a, b), c_(c) {} private: int c_; };