2010-10-31 19 views
6

bir temel sınıf ki . Bunu nasıl önleyebilirim?türetilmiş sınıftan temel sınıf oluşturucu arama değil

+1

Yapmayın; Bu mantıklı değil. Neden bunu yapman gerektiğini düşünüyorsun? – GManNickG

+0

@GMan Verilerin, kurucuda bir başlık ile hazırlandığı bir temel sınıfım var. Türetilmiş sınıfın hazırlanmış bir başlıkya ihtiyacı yoktur, ancak bir başlık hazırlayan ve bazı şeyleri dağıtan temel sınıf kurucusunu çağırır. – Brad

+3

Miras noktasını kaçırıyorsunuz. Kalıtım, bir "A'nın B" ilişkisini oluşturur. Eğer bir A bir A'nın yapmaması gereken şeyleri yaparsa, o zaman bir A B değildir. –

cevap

3

Temel sınıf örneği, türetilmiş sınıf örneğinin ayrılmaz bir parçasıdır. Türetilmiş bir sınıf örneğini başarılı bir şekilde oluşturursanız, tanımlamanız gereken tüm temel sınıf ve üye nesneleri olmalıdır, aksi halde türetilen nesnenin yapısı başarısız olabilir. Bir temel sınıf örneği oluşturmak, yapıcılarından birini çağırmayı içerir.

Bu, C++ 'da mirasın nasıl işlediğinin temelidir.

11

Ek boş bir hesap oluştur.

struct noprapere_tag {}; 

class baseClass 
{ 
public: 
    baseClass() : x (5), y(6) { }; 

    baseClass(noprapere_tag) { }; // nothing to do 

protected: 
    int x; 
    int y; 

}; 

class derClass : public baseClass 
{ 
public: 
    derClass() : baseClass (noprapere_tag) { }; 

}; 
İlgili konular