Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;STL堆栈:何时可以安全地弹出()_C++_C++11_Stl - Fatal编程技术网

C++ C++;STL堆栈:何时可以安全地弹出()

C++ C++;STL堆栈:何时可以安全地弹出(),c++,c++11,stl,C++,C++11,Stl,考虑: #include <iostream> #include <stack> class Abc { int x = 5; public: void display() { std::cout << x << std::endl; } }; int main() { std::stack<Abc> S; S.emplace(); auto obj = S.

考虑:

#include <iostream>
#include <stack>

class Abc {
    int x = 5;
    public:
    void display() {
        std::cout << x << std::endl;
    }
};

int main() {
    std::stack<Abc> S;
    S.emplace();

    auto obj = S.top();
    S.pop();
    obj.display();
    return 0;
}
#包括
#包括
Abc班{
int x=5;
公众:
无效显示(){
std::cout
auto obj=S.top();
copy从
S.top()
初始化
obj
。它是随后删除的元素的副本

您的代码片段具有定义良好的行为

如果要获取引用,例如
auto&obj=S.top();
auto-obj=S.top();
copy从
S.top()
初始化
obj
。它是随后删除的元素的副本

您的代码片段具有定义良好的行为


如果您要获取引用,例如
auto&obj=S.top()

@j4nu5,正如我最后一句话所说。它将是未定义的行为,因为元素在被引用后被引用和使用destroyed@j4nu5,正如我最后一句话所说,这将是未定义的行为,因为元素在被销毁后被引用和使用