gpt4 book ai didi

c++ - 这个C++代码是什么意思

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

我试图了解 webkit 如何解析 url,但我很难弄清这一点:

Vector<char, 4096> buffer(fragmentEnd * 3 + 1);

此行位于第 1214 行(您可以在此处查看:http://trac.webkit.org/browser/trunk/WebCore/platform/KURL.cpp#L1214)。我知道它正在制作一个 char 类型的 vector ,每个条目都是一个 4096 字节大的 char 数组,但我没有得到 buffer(fragmentEnd * 3 + 1)部分。

我认为这让我很困惑 b/c 我找不到在任何地方实例化缓冲区变量的地方(它不应该更像 Vector<char, 4096> buffer = new Vector<char, 4096>(...) 吗?

提前致谢

最佳答案

buffer变量恰好在那一行构造:

Vector<char, 4096> buffer(fragmentEnd * 3 + 1);

通过编译器执行的步骤,它首先确保有 sizeof(Vector<char, 4096>)堆栈上的字节空间,它可以在其中构造 Vector<char, 4096> buffer目的。然后调用 Vector<char, 4096>可以接受 int 的构造函数(因为 fragmentEnd * 3 + 1 是一个 int )在堆栈的存储上。

在当前Vector来源,没有构造函数采用 int .但是,有 a constructor that takes a size_t (无符号 int ),因此编译器将静态转换结果 fragmentEnd * 3 + 1size_t并调用该构造函数。

关于c++ - 这个C++代码是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2912266/

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