Domande con tag 'virtual-functions'

1
risposta

Perché il C ++ non ha una parola chiave "pura" per le funzioni virtuali?

Mi sono sempre chiesto perché abbiamo codice virtual void MyFunction() = 0; e non pure virtual void MyFunction(); C'è un riferimento per la base di questa decisione?     
posta 20.05.2015 - 10:53
1
risposta

Come viene chiamata la funzione non virtuale della classe base quando l'oggetto classe derivato viene assegnato alla classe base?

#include <iostream> class Base { private: int b_value; public: void my_func() {std::cout << "This is Base's non-virutal my_func()" << std::endl; } virtual void my_Vfunc() {std::cout << "This is Base's viruta...
posta 03.02.2016 - 09:21
1
risposta

Come viene chiamato il metodo della funzione corretta in fase di esecuzione?

Supponiamo di avere una classe base A e una classe derivata B . A implementa un metodo virtuale foo() che è sovraccarico in B . Se abbiamo un oggetto test di tipo B , allora l'oggetto conterrebbe sicuramente e...
posta 18.09.2016 - 02:58
4
risposte

Perché devo dichiarare le funzioni virtuali come tali?

Esempio: Abbiamo una classe di base Base e tre sottoclassi che implementano tutte la propria versione di doSomething() . In una funzione intermedia f(Base b) , vogliamo chiamare la versione pertinente di doSomething() a seco...
posta 21.05.2016 - 22:58
3
risposte

Ignora una funzione virtuale pura con argomenti predefiniti buona o cattiva?

L'override di una funzione virtuale pura con argomenti predefiniti è buona o cattiva? class Base { public: virtual int func(int i, int j = 10) = 0; }; class Derived : public Base { public: int func(int i, int j = 20) override; };    ...
posta 04.08.2017 - 08:07
4
risposte

Una classe base implementa un metodo virtuale per il tipo più comune o classe derivata?

Va bene implementare un metodo virtuale in una classe base perché so che la maggior parte delle classi derivate utilizzerà quella particolare implementazione? Supponiamo che abbia la seguente gerarchia di classi (in C #): public abstract cl...
posta 08.03.2018 - 00:27
1
risposta

Quali sono le conseguenze di nessun distruttore virtuale per questa classe base?

Ho trovato questo stesso codice qui: link struct Base { virtual Base& operator+=(int) = 0; }; struct X : Base { X(int n) : n_(n) { } X& operator+=(int n) { n_ += n; return *this; } int n_; }; struct Y : Base { Y(dou...
posta 16.08.2016 - 16:52
3
risposte

Quando contrassegnare una funzione come virtuale?

Sto cercando di capire il modo idiomatico di codificare. Sto usando gmock per testare i componenti che scrivo. Gmock richiede che i metodi siano virtuali per essere in grado di prendere in giro, ma la classe che sto cercando di prendere in giro...
posta 07.04.2016 - 07:40
3
risposte

Alcuni compilatori fanno questa ottimizzazione per le chiamate virtuali?

Questo mi è venuto in mente, e non sono proprio sicuro di come cercare questo. Diciamo che hai le seguenti classi class A { public: virtual Foo() = 0; virtual ManyFoo(int N) { for (int i = 0; i < N; ++i) Foo();...
posta 06.09.2018 - 10:06
1
risposta

Passa dati in un costruttore o crea invece metodi virtuali?

In un modulo orientato agli oggetti che descrive un database, dovrei passare le strutture dati di descrizione del DB al costruttore nei costruttori delle classi derivate, o dovrei invece creare metodi ("virtuali" che sono dinamici) che creano le...
posta 28.08.2015 - 19:50