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

直接导致崩溃

相关推荐
钱彬 (Qian Bin)3 小时前
项目实践17—全球证件智能识别系统(开发基于LabelMe标注的可视化审核接口)
qt·fastapi·全球证件识别
look ahead to11 小时前
关于PYQT qt designer的网格布局 单控件占多行的处理
开发语言·qt·pyqt
Lution Young13 小时前
Qt隐式共享产生的问题
开发语言·qt
少控科技15 小时前
QT进阶日记009
开发语言·qt
CodeCraft Studio15 小时前
从框架到体验:Qt + Qtitan 构建制造业嵌入式UI整体解决方案
开发语言·qt·ui·gui·嵌入式开发·hmi·制造业嵌入式ui
深蓝海拓15 小时前
PyQt5/PySide6的moveToThread:移动到线程
笔记·python·qt·学习·pyqt
少控科技15 小时前
QT高阶日记007
开发语言·qt
余衫马16 小时前
Qt for Python:PySide6 入门指南(中篇)
开发语言·c++·python·qt
njsgcs16 小时前
python qt做ai透明对话框
人工智能·python·qt
少控科技17 小时前
QT高阶日记5
开发语言·qt