[英]Destruction of a temporary object in C++
我有兩個類: Vote
和Voter
。
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.