Quali sono le operazioni comuni di ogni elettrodomestico? Attaccarlo alla spina, accenderlo e spegnerlo. Tralasciando per un attimo la prima delle tre, l'interfaccia può essere di soli due metodi (tre con il distruttore virtuale per obbligo del linguaggio).
codice:
struct Elettrodomestico {
    virtual void accendi()=0;
    virtual void spegni()=0;
    virtual ~Elettrodomestico() {}
};
Da questa interfaccia derivi quello che hai bisogno:
codice:
struct TV : public Elettrodomestico {
    void accendi() { puts("Ho acceso la TV"); }
    void spegni() { puts("Ho spento la TV"); };
    ~TV () {}
};

struct Phon : public Elettrodomestico {
    void accendi() { puts("Ho acceso il phon"); }
    void spegni() { puts("Ho spento il phon"); };
    ~Phon () {}
};

... 
TV tv;
Phon phon;

Elettrodomestico* apparecchio = &tv;
apparecchio->accendi();
apparecchio->spegni();

Elettrodomestico* apparecchio = &phon;
apparecchio->accendi();
apparecchio->spegni();
Ora resta da attarli alla spina.
codice:
Elettrodomestico* spina_elettrica[2];
spina_elettrica[0] = &tv;
spina_elettrica[1] = &phon;

spina_elettrica[0]->accendi();
spina_elettrica[0]->spegni();

spina_elettrica[1]->accendi();
spina_elettrica[1]->spegni();
Servono altri apparecchi? Ripeti la derivazione e lo attacchi a una nuova spina.
Questo a enormi linee.