C++引用小知识点

C++函数传参的时候发现一个问题

   //弹出文件对话框
    QString filepath=QFileDialog::getOpenFileName(this,"我的文件对话框");

    //创建QFile对象
    QFile myfile(filepath);

    //打开文件
    myfile.open(QIODevice::ReadWrite);

    //读取文件内容
    QByteArray buf=myfile.readAll();

    //把读取内容在文本浏览框和编辑框中显示出来
    //  setText(const QString &text)   const QString &text=buf;
    
    ui->textEdit->setText(buf);
    ui->textBrowser->setText(buf);

比如 ui->textEdit->setText(buf);

setText(const QString &text)//函数声明

实际上传参过程  = const QString & x = QbyteArray;

为什么const QString &类型可以实现对QByteArray呢?他们不是类型不一样吗?类型不一样的也可以引用吗?

找了一下资料:

const引用与类型转换

给引用添加 const 限定后,不但可以将引用绑定到临时数据,还可以将引用绑定到类型相近的数据,这使得引用更加灵活和通用,它们背后的机制都是临时变量。

哦!一般情况下,类型不一样确实不可以直接引用。但是const限定后,这样的引用是合法的,因为QByteArray是QString类型相近的数据。

还有一种解释是“传参过程中实现了QString对象的创建”,这种说法是不对的,因为形参是一个引用!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值