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

直接导致崩溃

相关推荐
江公望32 分钟前
Qt qmlplugindump浅谈
开发语言·qt·qml
彡皮32 分钟前
qt实用学习案例:数据库设计+图表显示+model-view模式+样式表定制
数据库·qt·学习
曦樂~34 分钟前
【Qt】文件操作/事件--mainwindow做编辑器
开发语言·qt
Larry_Yanan2 小时前
QML学习笔记(四十六)QML与C++交互:Q_PROPERTY宏映射
c++·笔记·qt·学习·ui·交互
江公望3 小时前
Qt enum ApplicationAttribute枚举值浅解
linux·qt
友友马3 小时前
『 QT 』信号-槽 补充: Qt信号槽断开连接与Lambda槽技巧
开发语言·数据库·qt
Source.Liu3 小时前
【CMakeLists.txt】 Qt 自动化构建配置详解
qt·自动化·librecad
Source.Liu4 小时前
【CMakeLists.txt】CMake 编译定义带值参数详解
c++·qt·librecad
曦樂~4 小时前
【Qt】TCP连接--客户端和服务器
服务器·网络·c++·qt·tcp/ip
枫叶丹46 小时前
【Qt开发】多元素类控件(三)-> QTreeWidget
开发语言·数据库·c++·qt