繁体   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