Tag: virtual-functions
In der objektorientierten Programmierung, eine virtuelle Funktion oder eine virtuelle Methode ist eine Funktion oder Methode, deren Verhalten kann überschrieben werden, in einer erbenden Klasse eine Funktion mit der gleichen Signatur. Dieses Konzept ist ein sehr wichtiger Teil des Polymorphismus-Teil der Objekt-orientierten Programmierung (OOP).
5
Antworten
Nehmen wir an, ich habe so eine Struktur der Klassen: Basisklasse Object, die in einer übergeordneten Klasse Bool, Int, Float, Bytes und Unicode Klassen. Ich hatte vor, einige Funktionen wie Bool cast_bool() const, Int cast_int() const usw.
7
Antworten
In Java können Sie mark-Methode als final zu machen unmöglich zu überschreiben. In C# haben, um eine Methode als virtuell zu machen möglich zu überschreiben. Heißt es, dass in C# markieren Sie alle Methoden, die virtuelle (außer
3
Antworten
Ich bin gespannt, wie performant die Ausdruck.Kompilieren gegenüber lambda-Ausdrucks in den code und versus direkte Methode zum Einsatz, und auch die direkte Methodenaufrufe vs virtuelle Methodenaufrufe (pseudo-code): var foo = new Foo(); var iFoo = (IFoo)foo; foo.Bar();
5
Antworten
Kommenden form einer C++/Java/C# - hintergrund, die ich erwarte, um zu sehen, die virtuelle Methoden in Swift, aber das Lesen der swift-Dokumentation sehe ich keine Erwähnung von virtuellen Methoden. Was bin ich? InformationsquelleAutor Ian Ringrose | 2014-06-03
5
Antworten
In einem der C++ tutorials im internet, fand ich heraus, die nachstehende Beschreibung auf, warum ein Konstruktor nicht virtual Können wir deklarieren einen virtuellen Konstruktor. Wir sollten das genaue Art des Objektes zur Kompilierzeit, so dass der
3
Antworten
Habe ich gelesen, über Virtuelle Funktionen und gefunden, VF verwendet werden, in der Polymorphie der geerbten Klasse. So , wenn eine Klasse und abgeleiteten Klasse beide haben die gleiche Funktion name, VF bindet die entsprechende Funktion, um
5
Antworten
Wie ich es verstehe, die override Schlüsselwort besagt, dass eine bestimmte Erklärung implementiert eine Basis virtual Methode, und die Kompilierung fehlschlagen soll, wenn es keine übereinstimmende Basis-Methode gefunden. Mein Verständnis von der final keyword ist, dass es
1
Antworten
Ich habe eine abstrakte Klasse, die erklärt wie folgt: class my_type { public: virtual ~my_type() = default; virtual void do_something() = 0; }; Wird es als gute Praxis zu erklären, der Destruktor wie diese, mit der default
2
Antworten
Ich bin immer ein runtime error ("Speicher kann nicht geschrieben werden"), dass, nach der Kontrolle durch den debugger, führt zu der Warnung in den Titel. Header sind die folgenden: componente.h: #ifndef COMPONENTE_H #define COMPONENTE_H using namespace std;
5
Antworten
Dies ist in der Tat eine interview-Frage, ich kann nicht herausfinden, die Antwort. Jeder kennt diese? Sie können reden, keinen Unterschied, zum Beispiel, die Daten, die push in den stack. Was genau ist Ihre Frage? Eine virtuelle
4
Antworten
Habe ich den folgenden code innerhalb der .h-Datei und ich bin mir nicht sicher, was macht der abtretungserklärung zu tun und wie heißt es richtig? virtual void yield() = 0; Dachte ich, dass die Funktion gibt den
4
Antworten
Ich bin neu in C++. Beim Versuch Probe Polymorphismus code, ich fand, dass Basis-Klasse virtual definition einer Funktion in der abgeleiteten Klasse ist nur möglich, wenn definiert, innerhalb der abgeleiteten Klasse oder von außerhalb mit der Deklaration
11
Antworten
Ich habe gehört, dass C++ - Klassen-member-Funktion-Vorlagen können nicht virtuell sein. Ist das wahr? Wenn Sie können virtuell sein, was ist ein Beispiel für ein Szenario, in dem würde man mit einer solchen Funktion? Ich Stand vor
7
Antworten
Folgendes: In X. h: class X { X(); virtual ~X(); }; X.cpp: #include "X.h" X::X() {} Versuchen, dieses zu bauen (ich bin mit einem .dll Ziel zu vermeiden, einen Fehler auf der main fehlt, und ich bin
8
Antworten
Ich weiß, dass abgeleitete Klassen können einfach "neu definieren" base class-member Funktionen, und dass, wenn die Funktion einer abgeleiteten Klasse ein Objekt ist genannt, die definierte Funktion in der abgeleiteten Klasse verwendet wird, aber... Nicht dieser stellt
3
Antworten
Den folgenden C++ - code, den ich denke, ist richtig, aber produzieren einige Warnungen bei der Kompilierung mit "-Woverloaded-virtual" ist die Warnung falsch oder es gibt ein echtes problem mit diesem code? Wenn, dass ist eine gefälschte
17
Antworten
Ich bin immer eine Warnung von ReSharper über einen Anruf zu einem virtuellen Mitglied aus meiner Objekte Konstruktor. Warum sollte dies etwas sein, das nicht zu tun? Ernsthaft.. Ihr Kommentar sollte die Antwort hier. Während Greg Erklärung
3
Antworten
In C++, bei der dynamischen Bindung, betrachten Sie das folgende Beispiel... class Base { virtual void fun() { cout<<"Base"; } }; class Derived : Base { void fun() { cout<<"Derived"; } }; int main() { Base *bptr;
2
Antworten
Hier ist mein Beispiel code, die den Fehler erzeugt: struct Impl { int data_size_; int find(int var){return 0;} int get(int rowid){return 0;} }; class Container { public: Container() {} virtual ~Container() {} virtual int get_size() = 0;
5
Antworten
Ich habe ein array mit benutzerdefinierten Klasse Student-Objekte. CourseStudent und ResearchStudent beide Erben von Studenten, und alle Instanzen von Student sind, der einen oder der anderen dieser. Habe ich eine Funktion zum Durchlaufen des Arrays ermitteln, der
3
Antworten
Ich habe eine Verwirrung über die Erben der virtual-Eigenschaft von der Methode. Nehmen wir an, wir haben 4 Klassen: Klasse A, Klasse B, Klasse C und Klasse D. Die Klassen geerbt werden, auf diese Weise: Ein ->
25
Antworten
Was ist der Unterschied zwischen einer abstrakten Funktion und eine virtuelle Funktion? In welchen Fällen ist es empfehlenswert, Sie zu verwenden virtual oder abstract? Welches ist der beste Ansatz? Eine abstrakte Funktion, muß überschrieben werden, während eine
2
Antworten
Was ich will zu tun ist für Execute() ausgeführt und vollendet es ruft die Base::Done() ruft dann die Derived::Done(). Ich Tue dies, weil Base Klasse Execute werde etwas tun, und wenn Ihre getan, rufen Sie die Derived::Done().
5
Antworten
Angesichts des folgenden code-fragment, was sind die Unterschiede in der Funktion Aufrufe? Was ist die Funktion versteckt? Was ist die Funktion überschreiben? Wie Sie sich beziehen auf Funktion überschreibt? Was ist der Unterschied zwischen den beiden? Ich
7
Antworten
Habe ich die folgende C++ - Faustregel für eine lange Zeit: Wenn eine Klasse überschreibt eine Funktion in der Basis-Klasse, die Funktion sollte sein erklärt virtual in der Basis. Ich denke, ich bin gekommen, über eine Ausnahme
6
Antworten
Ich habe eine diamond-Mehrfachvererbung Szenario wie dieses: A / \ B C \ / D Gemeinsamen übergeordneten Elements, A, definiert eine virtuelle Funktion fn(). Ist es möglich, beide B und C zu definieren fn()? Wenn es so
3
Antworten
Wenn Sie einen struct wie diesen struct A { void func(); }; und ein Verweis wie dieser A& a; können Sie einen Zeiger auf seine func Methode wie diese: someMethod(&A::func); Nun was ist, wenn die Methode virtuell
6
Antworten
Folgenden bis auf dieser Kommentar von der Frage,Schreiben firmware: Montage-oder high-level?: Beim kompilieren von C++ - code für die Arduino Plattform, die Sie verwenden können, virtuelle Funktionen, Ausnahmen, etc? Oder würden Sie wollen (müssen), verwenden eine Teilmenge
22
Antworten
Lerne ich C++, und ich bin gerade in der virtuellen Funktionen. Von dem, was ich gelesen habe (im Buch und online), virtuelle Funktionen sind Funktionen der Basisklasse, können Sie überschreiben in abgeleiteten Klassen. Aber früher in dem
6
Antworten
C# - Methoden in interfaces deklariert werden, ohne mit der virtual Schlüsselwort, und aufgehoben in der abgeleiteten Klasse ohne die override Stichwort. Gibt es einen Grund für dieses? Ich gehe davon aus, dass es nur eine Sprache,
8
Antworten
Ich habe gerade entdeckt das in einigen code: class Foo { [...] private: virtual void Bar() = 0; [...] } Macht dies irgendeinen Zweck? (Ich bin versucht zu port code von VS, um G++, und diese meine
11
Antworten
Ich habe gehört, dass C++ - Klassen-member-Funktion-Vorlagen können nicht virtuell sein. Ist das wahr? Wenn Sie können virtuell sein, was ist ein Beispiel für ein Szenario, in dem würde man mit einer solchen Funktion? InformationsquelleAutor der Frage
9
Antworten
Wenn ich das machen will, eine Klasse anpassungsfähig und machen es möglich, wählen Sie verschiedene algorithmen, die von außen-was ist die beste Umsetzung in C++? Sehe ich hauptsächlich zwei Möglichkeiten: Verwenden eine abstrakte Basis-Klasse, und übergeben Sie
20
Antworten
Warum C++ nicht über einen virtuellen Konstruktor? InformationsquelleAutor der Frage Arjun | 2009-04-09
8
Antworten
Lerne ich über C++ in einer Klasse und ich weiß nicht Recht Begriffen hat rein virtuelle Funktionen. Ich verstehe, dass Sie später bereits in einer abgeleiteten Klasse, aber warum wollen Sie es erklären, als gleich 0, wenn
6
Antworten
Ist es möglich zu schreiben virtuellen Methoden in Java, als würde man in C++? Oder, gibt es eine richtige Java-Ansatz, die Sie implementieren können, erzeugt ein ähnliches Verhalten? Könnte ich bitte einige Beispiele? InformationsquelleAutor der Frage yonatan
7
Antworten
Sagen, ich habe Klassen Foo und Bar wie folgt eingerichtet: class Foo { public: int x; virtual void printStuff() { std::cout << x << std::endl; } }; class Bar : public Foo { public: int y; void
12
Antworten
Wir alle wissen, was virtuelle Funktionen in C++, aber wie werden Sie implementiert, auf einer tiefen Ebene? Kann den vtable geändert werden, oder sogar direkt während der Laufzeit aufgerufen? Macht die vtable besteht für alle Klassen, oder
4
Antworten
Dies ist vielleicht ein feiner Punkt, sondern es handelt sich um die Warnung, die der compiler Fragen, wenn Sie etwas tun, wie: class A { public virtual void F() { } } class B : A {
3
Antworten
an meinem Arbeitsplatz (nur php), haben wir eine Basis-Klasse für die Datenbank-Abstraktion. Wenn Sie möchten fügen Sie eine neue Datenbank Tabelle mit der Basis-Schicht, erstellen Sie eine Unterklasse von dieser Basis-Klasse und überschreiben Sie einige Methoden zu
7
Antworten
Ich kam vor kurzem zu wissen, dass in C++ können rein virtuelle Funktionen können Optional einen Körper haben. Was sind die real-world Anwendungsfälle für solche Funktionen? InformationsquelleAutor der Frage missingfaktor | 2010-04-09
9
Antworten
Im Gegensatz zu Java, warum C# behandeln Methoden, wie nicht-virtuelle Funktionen standardmäßig? Ist es eher ein performance-Problem eher als andere mögliche Ergebnisse? Erinnert mich an das Lesen eines Absatzes von Anders Hejlsberg über mehrere Vorteile, die mit
9
Antworten
In Kürze: Aus einer C++ Basis-Klassen-Zeiger, die Punkte auf eine Instanz von einer abgeleiteten Klasse, wie man herausfinden kann, zur Laufzeit, ob eine nicht-rein virtuelle Funktion (mit einer Implementierung in der Basisklasse) wurde neu implementiert, in der
4
Antworten
Lese ich eine Menge Leute schreiben "eine virtuelle Tabelle vorhanden ist, für eine Klasse, die eine virtuelle Funktion deklariert". Meine Frage ist, gibt es eine vtable ist vorhanden, nur für eine Klasse, die eine virtuelle Funktion oder
4
Antworten
class base{ ..... virtual void function1(); virtual void function2(); }; class derived::public base{ int function1(); int function2(); }; int main() { derived d; base *b = &d; int k = b->function1() //Why use this instead of the
16
Antworten
Gibt es einen runtime-Leistungseinbußen bei der Verwendung von interfaces (abstrakte Basis-Klassen) in C++? InformationsquelleAutor der Frage andreas buykx | 2008-09-22
5
Antworten
Betrachten Sie das Beispiel unten: #include <iostream> using namespace std; class base { public: virtual int func() { cout << "vfunc in base class\n"; return 0; } }; class derived: public base { public: double func() {
7
Antworten
Ist, es gibt keinen Grund, um die Berechtigungen für eine überschriebene virtuelle C++ - Funktion unterscheidet sich von der Basisklasse? Besteht irgendeine Gefahr dabei? Beispiel: class base { public: virtual int foo(double) = 0; } class child
12
Antworten
Gibt es immer einen guten Grund zu nicht deklarieren einen virtuellen Destruktor für eine Klasse? Wann sollten Sie konkret vermeiden Sie das schreiben? InformationsquelleAutor der Frage Mag Roader | 2008-11-19
8
Antworten
Mit der struct-definition, die unten gegeben... struct A { virtual void hello() = 0; }; Ansatz #1: struct B : public A { virtual void hello() { ... } }; Ansatz #2: struct B : public A