Zeiger auf irgendwas immer 4 Byte gross ?



  • @walljumper: Eine x86 CPU verwendet intern 32 Bit Register um Bytes zu adressieren, daher ist der Adressraum 4GB gross. Extern verwendet eine x86 CPU allerdings nurmehr 30 Bit um ein DWORD zu adressieren, und wie der Speicher organisiert ist ist dann schon vollkommen egal. Der Speicher könnte 64 Bit, 128 Bit oder sogar 384 Bit Einheiten verwenden. I.A. werden auch immer bloss gesamte Cache-Lines gelesen oder geschrieben - das hat mit einem "Byte" oder der "Wortgrösse" der CPU nixmehr zu tun.

    ganz großes Kino. Wie oft muss ich eigentlich noch sagen das die cpu nicht gemeint war. btw.Auserdem stimmt was du schreibst so nicht. Der maximale Speicherausbau hängt sehr wohl mit von der Speicher organisation ab. Auserdem was hat das damit zu tun das immer ganze Cachelines gelesen werden?

    Der Begriff des Wortes wird unterschiedlich verwendet. Warum das hier zu Diskussionen führt, ist mir unverständlich - schließlich schloss sich bei mir nicht zufällig noch ein Satz an, der die Bedeutung dieses Begriffes in meinem Beitrag klären sollte.
    

    Das geht aber scheinbar in manche Köpfe nicht rein.


  • Mod

    LordJaxom schrieb:

    Ich ging in diesem Forum grundsätzlich von dem aus, was "Zeiger" in C++ bedeuten kann.

    Das Problem ist, dass - zugespitzt formuliert - Zeiger auf Member oder Zeiger auf Memberfunktionen keine Zeiger sind. Ein Zeiger ist jedenfalls etwas, dass auf etwas anderes verweist. Den Verweis lösen wir dann mittels des Dereferenzierungsoperators * auf.
    Für Zeiger auf Member und Memberfunktionen gilt das nicht. Abstrakt gesehen sind das Funktionen, die erst durch Anwendung eines Objekt- oder Zeigerparameters auf ein Objekt oder eine Funktion verweisen. Aus diesem Grunde halte ich es für verwirrend, sie im Zusammenhang dieses Threads gemeinsam zu behandeln. Keinesfalls geht es mir dabei um die konkrete Repräsentation durch den Compiler.



  • SG1 schrieb:

    walljumper schrieb:

    lolz schrieb:

    Außerdem muss nicht jeder Zeiger 4Byte groß sein.

    Könnt ja mal spaßeshalber folgendes testen:

    #include <iostream>
    
    class Base
    {
      public:
        virtual void doIt() = 0;
    };
    
    class Derived : public virtual Base
    {
      public:
        void doIt(){}
    };
    
    int main()
    {
       std::cout << sizeof( &Derived::doIt );
    }
    

    @lolz

    dein code gibt bestimmt nicht die größe eines Zeigers aus mit & werden referenzen angegeben oder addresse eines objekts zurückgegeben.Zeiger werden mit * gekennzeichnet.

    &foo ist ein Zeiger auf foo.

    😃 😃 😃

    Ein gutes Beispiel für ein amoklaufendes Beispiel (angetrieben durch diverse Eitelkeiten) ....

    Ist doch ganz einfach:
    "&Derived::doIt zeigt auf die Funktion doIt() der Klasse Derived".

    Fertig, kein Grund für "foo", 2 Seiten Posts darüber und auch keiner, sich über Kompetenzen aufzuregen.

    Gruß,

    Simon2.


  • Mod

    Simon2 schrieb:

    Ist doch ganz einfach:
    "&Derived::doIt zeigt auf die Funktion doIt() der Klasse Derived".

    Und wieso wird dann hier

    #include <iostream>
    
    class Base
    {
      public:
        virtual void doIt() = 0;
    };
    
    class Derived : public virtual Base
    {
      public:
        void doIt(){ std::cout << "Derived::doIt\n"; }
    };
    
    class Derived2 : public Derived
    {
      public:
        void doIt(){ std::cout << "Derived2::doIt\n"; }
    };
    
    int main()
    {
    	Derived2 foo;
    	void (Derived::*p)() = &Derived::doIt;
    	(foo.*p)();
    }
    

    Derived2::doIt ausgegeben?



  • camper schrieb:

    ...Und wieso wird dann hier...Derived2::doIt ausgegeben?

    😕
    Wieso sollte das ein Argument gegen meine Aussage sein ?

    Gruß,

    Simon2.


  • Mod

    Simon2 schrieb:

    camper schrieb:

    ...Und wieso wird dann hier...Derived2::doIt ausgegeben?

    😕
    Wieso sollte das ein Argument gegen meine Aussage sein ?

    Gruß,

    Simon2.

    nicht dagegen. Deine Aussage ist allerdings missverständlich. Dein Begriff des Zeigens ist hier so weit gefasst, dass man ihn ohne zusätzliche Erklärung kaum verstehen kann. Was daran dann einfach sein soll, entzieht sich meinem Verständniss. Es dürfte viele Anfänger geben, die von dem Ergebnis meines Beispiels überrascht sind.



  • camper schrieb:

    ...Deine Aussage ist allerdings missverständlich. Dein Begriff des Zeigens ist hier so weit gefasst, dass man ihn ohne zusätzliche Erklärung kaum verstehen kann. Was daran dann einfach sein soll, entzieht sich meinem Verständniss. Es dürfte viele Anfänger geben, die von dem Ergebnis meines Beispiels überrascht sind.

    Nun, im Zusammenhang finde ich das wenig mißverständlich (geht einem ja immer so bei den eigenen Aussagen 😉 ) ...

    Es geht mir nur darum:
    A lolz bietet Code an, der die Größe eines Zeigers berechnet
    B wallpaper mißversteht die Syntax ("... & ist Referenz ...")
    C Eine lange Diskussion über "foo" und wallpapers Kompetenz startet und dauert.

    IMO wäre C vollkommen überflüssig gewesen, wenn man wallpaper ganz kurz übers einen Irrtum aufgeklärt hätte.

    Leider ist es in diesem Forum schon fast "üblich", Anderen, die eine falsche/mißverständliche/... Formulierung benutzten, sofort
    - Generalinkompetenz zu- und
    - deswegen jegliche Äußerungs-/Lebensberechtigung abzusprechen.
    (Dass Du z.B. nicht damit gemeint bist, ist Dir hoffentlich klar)

    Das führt leider zu langen Scheingefechten, Beleidigungen und anderem Quatsch, der es bisweilen unerfreulich macht, hier unterwegs zu sein. .... aber das ist eine andere Geschichte...

    Ich freue mich an den guten Beiträgen von Dir, CStoll, ... und den anderen "Recken", solange die Pöbler das noch nicht überwiegen.

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Leider ist es in diesem Forum schon fast "üblich", Anderen, die eine falsche/mißverständliche/... Formulierung benutzten, sofort
    - Generalkompetenz zu- und
    - deswegen jegliche Äußerungs-/Lebensberechtigung abzusprechen.

    gut erkannt.
    einfach drüber hinwegsehen
    :xmas2:



  • ten schrieb:

    ...
    einfach drüber hinwegsehen
    :xmas2:

    Ich arbeite da an mir. 🙂
    (gezieltes Ignorieren ist gar nicht so einfach)

    Gruß,

    Simon2.



  • Edit ! Knopf verwechselt.


Anmelden zum Antworten