探究一下qDebug() 连续输出 的实现方式

50 篇文章 2 订阅

 

我们都知道在QT应用程序中,打印结果可以使用qDebug() << “value1” << “value2”

那么这究竟是怎么实现的呢?

 

我们可以在qlogging.h中查看qDebug的定义:

#define qDebug QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug

可以看到qDebug是一个宏定义。那么qDebug() 就是相当于:

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

那么 QMessageLogger 就是声明一个临时对象,对于一个临时对象调用debug(), 也就是在QMessageLogger中有一个debug()的方法, 来返回一个临时另一个类的对象作为临时变量B。对于类B,应该实现连续的 “<<” 输出。然后在 类B的析构函数中,将传入的变量打印出来。

 

我们来实现一个我们自己的xDebug() << "value1"  << "value2"

我们应该定义两个类 Test1, Test2来模拟一下:

class Test1
{
public:
    Test1() {}
    Test2 test2 () {
        return Test2();
    }
};
class Test2
{
public:

    Test2();
    ~Test2() {
        //进行数据打印(处理)
        printf();
    }

    Test2& operator << (const QVariant value) {
        m_data.append(value);

        return *this;
    }

private:
    QList<QVariant> m_data;     //日志数据列表

};

最终我们使用xDebug 来定义一个宏:.

#define xDebug MessageLogger().test2

我们使用的时候 xDebug() << "value1" << " value2"

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值