Új hozzászólás Aktív témák

  • mgoogyi

    senior tag

    válasz modder #2076 üzenetére

    "A b = B();"

    Itt lehet van egy kis zavar az erőben, ugyanis ez a sor arra enged következtetni a 'b' változónévvel, hogy ez egy B típusú objektum lesz.
    Holott ez a sor a következőt a jelenti:
    A b ( B() );
    Azaz hozz létre egy A típusú objektumot annak a copy konstruktorával, amely egy B objektumot kap paraméterként.
    Ennek két lényeges aspektusa van.
    Egyrészt a B() objektumból ledarálódik minden és A típusú objektum marad, merthogy a copy konstruktor érték szerinti A típusú bemenetet vár.
    kb így néz ki és defaultból létrejön a copy constructor: A (A input)
    Ez a ledarálás az ős irányába meg mindig implicit ( ~= láthatatlanul magától) megtörténik.

    Másrészt A típusú objektum fog létrejönni.

    Másik dolog, hogy ez a kései virtuális kötés csak pointeren és referencián keresztül értelmezhető.

Új hozzászólás Aktív témák