【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;
    }
}

直接导致崩溃

相关推荐
一然明月4 小时前
QT之基础控件
开发语言·qt
深蓝海拓9 小时前
PySide6从0开始学习的笔记(十) 样式表(QSS)
笔记·python·qt·学习·pyqt
深蓝海拓10 小时前
PySide6从0开始学习的笔记(十三) IDE的选择
笔记·python·qt·学习·pyqt
YouEmbedded10 小时前
解码QPixmap 图片自适应控件缩放与圆角处理
qt·图片适配控件
Y1rong10 小时前
QT之天气预报
qt
Larry_Yanan12 小时前
Qt多进程(二)QProcess+stdio
开发语言·qt
码农葫芦侠12 小时前
Qt 跨线程内存管理陷阱:QSharedPointer、deleteLater() 与 QPointer 的致命组合
开发语言·数据库·qt
CC.GG13 小时前
【Qt】信号和槽
开发语言·数据库·qt
水煎包V:YEDIYYDS88817 小时前
QT QML 实现的旋钮按钮,类似收音机音量旋钮,可指示方向和角度
qt·qml·旋钮组件
龚建波17 小时前
Qt程序设计:QPromise/QFuture多线程任务管理
qt·qfuturewatcher·qpromise·qfuture