執(zhí)行期語意學(xué)(Runtime Semantics)

對象的構(gòu)造和析構(gòu)(Object Constructor and Destructor)

一般而言,constructor和destructor的安插都如你所預(yù)期:

{
    Point point;    //point.Point::Point()  一般而言會被安插在這里
    ...    //point.Point::~Point() 一般而言會被安插在這里}

如果一個區(qū)段(譯注:以{}括起來的區(qū)域)或函數(shù)中有一個以上的離開點,情況會稍微混亂一些。Destructor必須被放在每一個離開點(當時object還存活)之前。例如:

{
    Point point;    //constructor在這里行動
    switch(int(point.x())){        case -1 : 
            //mumble;
            //destructor在這里行動
            return;        case 0:            //mumble
            //destructor在這里行動
            return;        default:            //mumble
            //destructor在這里行動
            return;
    }    //destructo