阅读量: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; } }
直接导致崩溃