在C++中销毁临时物体
Destruction of a temporary object in C++
本文关键字:C++ 更新时间:2023-10-16
我有两个类:Vote
和Voter
。
类Voter
有一个接收两个字符串的构造函数。
类Vote
具有一个构造函数,该构造函数从类Voter
接收对象和一个字符串。
现在,我执行以下操作:
Voter vr6("Cyprus", "Regular");
eurovision += Vote(vr6, "USA");
其中欧洲电视网是我重载+=
运算符的类中的对象。
据我所知,在第二行中将创建一个临时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
构造函数的语句结束,此副本将被删除。
相关文章:
- 没有找到相关文章