Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » rein virtuel+inline

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
10.08.2007, 09:59 Uhr
~wissender
Gast


Der einzige Fall der mir einfällt ist folgender:


C++:
struct X { virtual void foo() { } };

// ...
X y;
y.foo(); // wird geinlined weil y konkret vom Typ X ist



Wenn (un)wissender das meinte stimmt es natürlich. Dann hab ich ihn einfach falsch verstanden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
10.08.2007, 10:12 Uhr
Kest
saint


Ich würde dazu tendieren, dass in deinem Fall der Aufruf doch zur Laufzeit aufgelöst wird; bei so was eher nicht:


C++:
struct A
{
       virtual void sayWhat() const {}
};


struct B : public A
{
       virtual void sayWhat() const {}
};



int main()
{
    B b;
    b.A::sayWhat();
}

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 10.08.2007 um 10:39 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
10.08.2007, 11:36 Uhr
~wissender
Gast


Bist du sicher? Wenn mein Code nicht zur Kompilierzeit aufgelöst werden würde wär das ja Unsinn. Und dein Beispiel, stimmt, ich vergaß!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
10.08.2007, 22:35 Uhr
(un)wissender
Niveauwart


Dein Code wird in der Regel zu Kompilierzeit aufgelöst, weil das konkrete Objekt bekannt ist.
Ein Debugger verrät da so einiges.
Genau das sowas habe ich auch gemeint.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
10.08.2007, 23:17 Uhr
0xdeadbeef
Gott
(Operator)



Zitat von mischa:

kann man rein virtuelle Funktionen auch inline machen und kann man sie dann in abgeleiteten Klassen wieder "normal" machen und umgekehrt, also eine rein virtuelle Funktion in der Ableitung inline machen?

Das war die ursprüngliche Frage, und die Antwort darauf ist immer noch nein. Man kann später in abgeleiteten Klassen die selbe Funktion inline deklarieren, und unter Umständen benutzt der Compiler das sogar zur Optimierung, aber die Funktion ist nach wie vor virtuell. Anders würde es ja auch gar keinen Sinn ergeben.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: