temporäre Objekte - CTor, DTor, Exceptions



  • Angenommen, ich verwende eine Hilfsklasse

    class CHelper 
    {
      protected:
        SomeType * pData;
    
      public:
        explicit CHelper(SomeType & data) : pData(&data) 
        {
          pData->AcquireRessource();
        }
    
        ~CHelper()
        {
          pData->ReleaseRessource();
        }
    };
    

    und verwende sie folgendemaßen:

    // extern Foo(CHelper const & helper);
    SomeType stval;
    Foo(CHelper(stval));   // <-- (1)
    

    a) wird in (1) der CHelper::~CHelper erst aufgerufen, wenn Foo() ausgeführt wurde?
    b) wenn SomeType::AcquireRessource eine Exception wirft, wird weder Foo() noch der CHelper::~CHelper ausgeführt?

    (Soweit ich weiß 2x ja, aber fragen schadet ja nicht 😉 )

    Dankeschön



  • peterchen schrieb:

    (Soweit ich weiß 2x ja, aber fragen schadet ja nicht 😉 )

    Du hast recht.


Anmelden zum Antworten