Articles of dell’ereditarietà

Posso eseguire l’override di una proprietà in c #? Come?

Ho questa class base: abstract class Base { public int x { get { throw new NotImplementedException(); } } } E il seguente discendente: class Derived : Base { public int x { get { //Actual Implementaion } } } Quando compilo, ricevo questo avviso dicendo che la definizione di x della class derivata nasconderà […]

allineamento dati c ++ / ordine dei membri ed ereditarietà

In che modo i membri dei dati vengono allineati / ordinati se si utilizza l’ereditarietà o l’ereditarietà multipla? Questo compilatore è specifico? C’è un modo per specificare in una class derivata come i membri (compresi i membri della class base) devono essere ordinati / allineati? Grazie!

C # Covariance sui tipi di ritorno sottoclass

Qualcuno sa perché i tipi di ritorno covarianti non sono supportati in C #? Anche quando si tenta di utilizzare un’interfaccia, il compilatore si lamenta che non è consentito. Vedi il seguente esempio. class Order { private Guid? _id; private String _productName; private double _price; protected Order(Guid? id, String productName, double price) { _id = […]

Chiamare il costruttore della class base dal costruttore della class derivata

Ho una domanda: Diciamo che in origine ho queste classi che non posso cambiare (diciamo perché sono prese da una libreria che sto usando): class Animal_ { public: Animal_(); int getIdA() { return idA; }; string getNameA() { return nameA; } private: string nameA; int idA; } class Farm { public : Farm() { sizeF=0; […]

Tabelle virtuali e layout di memoria in più eredità virtuali

Considera la seguente gerarchia: struct A { int a; A() { f(0); } A(int i) { f(i); } virtual void f(int i) { cout << i; } }; struct B1 : virtual A { int b1; B1(int i) : A(i) { f(i); } virtual void f(int i) { cout << i+10; } }; struct B2 […]

Ereditarietà e sovraccarico di metodi

Perché il compilatore C ++ dà questo errore? Perché posso accedere a lol () da B, ma non posso accedere a rofl () [senza parametri]. Dov’è il trucco? class A { public: void lol(void) {} void rofl(void) { return rofl(0);} virtual void rofl(int x) {} }; class B : public A { public: virtual void […]

Problemi con l’ereditarietà di operator = in C ++

Sto avendo problemi con l’ereditarietà dell’operatore =. Perché questo codice non funziona e qual è il modo migliore per risolverlo? #include class A { public: A & operator=(const A & a) { x = ax; return *this; } bool operator==(const A & a) { return x == ax; } virtual int get() = 0; // […]

Sovrascrivere la funzione di sovraccarico di una base in C ++

Possibile duplicato: Risoluzione di sovraccarico C ++ Mi sono imbattuto in un problema in cui, dopo che la mia class aveva annullato una funzione della sua class base, tutte le versioni sovraccaricate delle funzioni venivano nascoste. È questo di progettazione o sto facendo qualcosa di sbagliato? Ex. class foo { public: foo(void); ~foo(void); virtual void […]

Un’interfaccia può estendere più interfacce in Java?

Un’interfaccia può estendere più interfacce in Java? Questo codice sembra valido nel mio IDE e compila: interface Foo extends Runnable, Set, Comparator { } ma avevo sentito che l’ereditarietà multipla non era permessa in Java. Perché sembra esserci un’eccezione per le interfacce?

Un modo per trasmettere un tipo di base a un tipo derivato

Non sono sicuro se questa sia una cosa strana da fare o no, o se è un po ‘come l’odore del codice … ma mi stavo chiedendo se ci fosse un modo (una sorta di modello di oop sarebbe bello) per “lanciare” un tipo di base a una forma del suo tipo derivato. So che […]