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

直接导致崩溃

相关推荐
unicrom_深圳市由你创科技6 分钟前
工业上位机,用Python+Qt还是C#+WPF?
python·qt·c#
Larry_Yanan10 小时前
QML学习笔记(四十二)QML的MessageDialog
c++·笔记·qt·学习·ui
Main. 2414 小时前
从0到1学习Qt -- 创建项目
qt
共享家952718 小时前
QT-常用控件(多元素控件)
开发语言·前端·qt
寻找华年的锦瑟20 小时前
Qt-键鼠事件
开发语言·qt
jjjxxxhhh12321 小时前
【项目-】Qt + QCustomPlot 实现频谱监测仪:四图联动、高频信号注入、鼠标交互全解析
开发语言·qt·交互
Larry_Yanan1 天前
QML学习笔记(四十)QML的FileDialog和FolderDialog
笔记·qt·学习
知南x1 天前
【QT界面设计学习篇】qt Kits工具设置/qt多版本设置(ubuntu)
qt·学习·ubuntu
ajassi20001 天前
开源 C++ QT QML 开发(二十二)多媒体--ffmpeg编码和录像
c++·qt·开源
Larry_Yanan1 天前
QML学习笔记(四十)QML的ApplicationWindow和StackView
c++·笔记·qt·学习·ui