[英]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.