Puoi partire da qualcosa come questo.
codice:
// Interfaccia pura astratta
class Elettrodomestico {
	public:
		elettrodomestico(){};
		virtual ~elettrodomestico(){};
		virtual string getTipo() const=0;
		virtual int getConsumo() const=0;
		virtual int getPrezzo()cont= 0;
};
// Classe dedicata allo storage dei dati.
class ElettrodomesticoDataType : public Elettrodomestico {
	protected:
		string tipo; //lavatrice, aspirapolvere....
		int energia_Kw; //consumo
		int prezzo;
};
// Classe concreta di implementazione. 
class Lavatrice : public ElettrodomesticoDataType {
	public:
		Lavatrice() {const int& consumo, const int& prz) {
			tipo = "Lavatrice";
			energia_Kw = consumo;
			prezzo = prz;
		}
		~Lavatrice() {}
		string getTipo() const { return tipo; }
		int getConsumo() const { return energia_Kw; }
		int getPrezzo() const { return prezzo; }		
};

typedef std::shared_ptr<Elettrodomestico> SPElettrodomestico;

int main (void) {
	std::vector<SPElettrodomestico> Elettrodomestici;
	Elettrodomestici.push_back(SPElettrodomestico(new Lavatrice(250, 3000)));
	
	cout << Elettrodomestici[0]->getTipo() << "; ";
	cout << Elettrodomestici[0]->getConsumo() << "; ";
	cout << Elettrodomestici[0]->getPrezzo() << endl;
}