【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版Word字处理软件
c++·qt
Wyn_15 小时前
【QT】窗口/界面置于最前端显示,且激活该窗口
qt
千千道21 小时前
QT 中 UDP 的使用
开发语言·qt·udp
0xCC说逆向2 天前
Windows图形界面(GUI)-QT-C/C++ - QT 窗口属性
c语言·开发语言·c++·windows·qt·mfc
island13142 天前
【QT】 控件 -- 按钮类(Button)
java·数据库·qt
北顾南栀倾寒2 天前
[Qt]系统相关-文件操作-QFile、QFileInfo类以及相关操作函数
开发语言·c++·qt·用户界面
青春_strive3 天前
Qt常用控件之输入类控件
开发语言·qt
0xCC说逆向3 天前
Windows图形界面(GUI)-QT-C/C++ - Qt键盘与鼠标事件处理详解
c语言·开发语言·c++·windows·qt·win32·1024程序员节
道剑剑非道3 天前
QT开发技术 【基于TinyXml2的对类进行序列化和反序列化】一
数据库·qt·算法
很楠不爱3 天前
Qt——界面优化
开发语言·qt