gpt4 book ai didi

c++ - qtDebug() 语法是如何工作的

转载 作者:行者123 更新时间:2023-11-30 01:45:25 25 4
gpt4 key购买 nike

这是 qt 文档中提供的 qDebug() 的替代语法。

qDebug() << "Brush:" << myQBrush << "Other value:" << i;

“<<”运算符在这里做什么?他们是否将字符串放入函数中?它是否允许在 C++ 语法中使用,还是仅在 Qt 中有效(因为文档也讨论了 QtDebugMsg)

最佳答案

具有此语法(带空括号的 qDebug)它 returns QDebug具有 operator<< 的对象overloaded每次运算符(operator)完成时,它都会返回对 QDebug 的引用对象,以便您可以链接操作。


qDebug是一个宏,定义为:

QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug

所以如果你写 qDebug它被替换为上面的行但是 QMessageLogger::debug是一个函数,而不是一个字段,所以你不能以这种方式访问​​它。显然,使用函数的正确方法是添加 ()给它。所以我们写qDebug()在宏展开后我们得到:

QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug()

这意味着:创建一个 QMessageLogger 类型的临时对象并调用debug方法就可以了。什么是debug方法?这是:QDebug debug() const; .所以 qDebug() line 给我们一个临时对象 QDebug类型。

然后在这个临时对象上我们调用一个 operator<< (使用哪一个取决于参数类型)。

关于c++ - qtDebug() 语法是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34690328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com