codice:
#include <iostream>

class CBase{
	private:
	const int fMember1, fMember2;
	
	public:
	void Dump (void) const{
		std::cout << fMember1 << std::endl;
		std::cout << fMember2 << std::endl;
	}
	
	public:
	CBase (const int theMember1, const int theMember2):
	fMember1 (theMember1),
	fMember2 (theMember2){
	}
	
	virtual ~CBase (void){
	}
};

class CDerived: public CBase{
	public:
	CDerived (const int theMember1, const int theMember2):
	CBase (theMember1, theMember2){
	}
	virtual ~CDerived (void){
	}
};

int main (void){
	const CDerived aDerived (1, 2);
	aDerived.Dump ();
	return 0;
}
Osserva che ho messo i distruttori virtuali: metticeli anche tu se vuoi evitare probabilissimi mal di testa futuri ;-)