目录

【Qt】使用临时对象的坑

前言

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

cpp 复制代码
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;
}

输出

cpp 复制代码
"非临时对象 str : " nihao
"临时对象 str : " 

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

cpp 复制代码
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;
    }
}

直接导致崩溃

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
@hdd4 小时前
Qt实现HTTP GET/POST/PUT/DELETE请求
qt·http
阳光_你好6 小时前
详细说明Qt 中共享内存方法: QSharedMemory 对象
开发语言·数据库·qt
爱吃馒头爱吃鱼6 小时前
QML编程中的性能优化二
开发语言·qt·学习·性能优化
m0_555762908 小时前
qml 基本元素
qt·qml
yuanbenshidiaos9 小时前
面试问题总结:qt工程师/c++工程师
c++·qt·面试
秋风&萧瑟9 小时前
【QT】QT的多界面跳转以及界面之间传递参数
开发语言·qt
AAA废品回收站陈师傅13 小时前
10乱码问题的解释(1)
qt
长流小哥13 小时前
可视化开发:用Qt实现Excel级动态柱状图
开发语言·c++·qt·ui
嘤国大力士15 小时前
C++11&QT复习 (十)
java·c++·qt
only-lucky15 小时前
QT之QML(简单示例)
前端·javascript·qt