在C++中销毁临时物体

Destruction of a temporary object in C++

本文关键字:C++      更新时间:2023-10-16

我有两个类:VoteVoter

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构造函数的语句结束,此副本将被删除。

相关文章:
  • 没有找到相关文章