我试图了解 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 + 1
到 size_t
并调用该构造函数。
关于c++ - 这个C++代码是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2912266/