簡體   English   中英

C++中臨時對象的銷毀

[英]Destruction of a temporary object in C++

我有兩個類: VoteVoter

Voter類有一個構造函數,它接收兩個字符串。

Vote類有一個構造函數,它從Voter類接收一個對象和一個字符串。

現在,我執行以下操作:

Voter vr6("Cyprus", "Regular");
eurovision += Vote(vr6, "USA");

其中 eurovision 是我重載+=運算符的類中的對象。

據我所知,在第二行中將創建一個臨時Vote對象。

我的問題是, vr6究竟如何受到臨時對象破壞的影響?

編輯: Vote構造函數和析構函數的定義:

Vote(Voter current_voter, string state1, string state2 = "", string state3 = "", string state4 = "", string state5 = "", string state6 = "", string state7 = "", string state8 = "", string state9 = "", string state10 = "") :
        voter(current_voter), voted_state(new string[VOTE_ARRAY_SIZE]){
        voted_state[0] = state1;
        voted_state[1] = state2;
        voted_state[2] = state3;
        voted_state[3] = state4;
        voted_state[4] = state5;
        voted_state[5] = state6;
        voted_state[6] = state7;
        voted_state[7] = state8;
        voted_state[8] = state9;
        voted_state[9] = state10;
    }
    ~Vote() {
        delete[] voted_state;
    }

由於您將vr6按值傳遞給Vote的構造函數,因此vr6的對象本身將不依賴於Vote對象的生命周期。 但是請注意,“按值調用”將創建vr6的臨時副本,一旦調用Vote構造函數的語句結束,該副本將被刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM