gpt4 book ai didi

c++ - 将 const QByteArray 传递给重载函数

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

我有以下重载函数

void testFun(QByteArray& arr){
QTextStream out(stdout);
out << "QByte" << endl;
}

void testFun(QString str){
QTextStream out(stdout);
out << "QStr" << endl;
}

如果我使用 const QByteArray 作为参数,为什么调用函数 void testFun(QString str)

意思是——这段代码:

QByteArray bA("aaa");
const QByteArray bB(bA);

testFun(bA);
testFun(bB);

给出以下输出:

QByte
QStr

最佳答案

由于第一个重载采用非常量 QByteArray,所以它不会被使用。

C++ 有一个叫做 Converting Constructors 的特性.这意味着未标记为 explicit 的单参数构造函数可以自动用于将一种类型转换为另一种类型以进行函数重载解析。

QStringsuch a constructor需要一个 const QByteArray&。因此,在选择要使用的函数重载时,编译器可以首先使用该构造函数将 QByteArray 转换为 QString,然后继续传递该 QString 进入你的第二个函数。

请参阅http://en.cppreference.com/w/cpp/language/overload_resolution了解更多信息。

关于c++ - 将 const QByteArray 传递给重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50134511/

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