【Qt】使用临时对象的坑

avatar
作者
猴君
阅读量:0

前言

使用临时对象时,一定要注意临时对象析构后是否会对代码造成影响,下面是一些可能出现的错误

std::string Widget::getStr() {     return "nihao"; }  void Widget::on_pushButton_clicked() {     std::string objStr = getStr();     const char* str = getStr().c_str();      qDebug() << QStringLiteral("非临时对象 str : ") << objStr.c_str();     qDebug() << QStringLiteral("临时对象 str : ") << str; } 

输出

"非临时对象 str : " nihao "临时对象 str : "  

未定义行为,可能导致崩溃也可能不会崩溃

void Widget::on_pushButton_2_clicked() {     m_hash.insert(0, "libai");     m_hash.insert(1, "laowang");     m_hash.insert(2, "jieke");     m_hash.insert(3, "bad");     QVector<QString> vec(m_hash.values().begin(), m_hash.values().end()); //访问了悬空指针     std::sort(vec.begin(), vec.end(), [](const QString &left, const QString &right){         return left > right;     });     for(const QString &item : vec){         qDebug() << item;     } } 

直接导致崩溃

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!