对不起,我是JavaScript和TypeScript专家,不是c ++专家。
但是JS引擎V8是用c ++编写的,这是来自there的代码片段:
// Convert the result to an UTF8 string and print it.
v8::String::Utf8Value utf8(isolate, result);
printf("%s\n", *utf8);
在上面的代码中有两行。
第一行包含utf8
函数...它来自哪里?我以前在文件中没有看到它,也没有导入它(还是它)?
第二行包含utf8
变量(对吗?),尽管带有我不知道的*
修饰符。变量来自哪里?星形修饰剂的作用是什么?
很抱歉出现这种问题,但目前我无法深入研究最复杂的语言之一的文档,即c ++ ...
答案 0 :(得分:6)
utf8
不是函数,而是变量。代码段(isolate, result)
是传递给其构造函数的 arguments 。
可以将其重写为以下功能,以使它们完全相同,并且以JavaScript程序员更熟悉的方式进行:
auto utf8 = v8::String::Utf8Value(isolate, result);
其中auto
推断变量的类型。
对于*
中的*utf8
,其含义将取决于实现。 *
作为前缀运算符可以赋予用户定义的含义,尽管通常它具有“到达并从中获取值”的语义,例如原始指针和std::unique_ptr
和{{ 1}}。
我个人并不熟悉std::optional
。您应该在v8
类型的*
运算符上查找文档,以准确了解其功能。
您还应该非常清楚C ++需要花费很长时间来学习,并且容易被误解或做错了事情。如果您想学习C ++,建议您阅读good C++ book以获得基本的理解。