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

直接导致崩溃

相关推荐
鄃鳕1 小时前
QSS【QT】
开发语言·qt
全栈开发圈2 小时前
新书速览|OpenCV计算机视觉开发实践:基于Qt C++
qt·opencv·计算机视觉
学习同学4 小时前
设计模式 建造者模式
qt·设计模式·建造者模式
luoyayun3614 小时前
Qt QML实现Windows桌面歌词动态播放效果
qt·qt歌词播放效果
LoveXming7 小时前
Qt工具栏中添加按钮QAction
开发语言·qt
whoarethenext8 小时前
使用c++调用deepseek的api(附带源码)
服务器·开发语言·c++·qt·deepseek
永不停转9 小时前
QT 实现 C++ 数据类与 json 的转换
c++·qt
忒可君14 小时前
QT 5.15 程序打包
开发语言·c++·qt
永不停转16 小时前
借助 QT 的反射机制实现数据类的序列化
c++·qt
musk121216 小时前
qt 配置 mysql 驱动问题:Cannot load library qsqlmysql;QMYSQL driver not loaded
qt·mysql