Вы правы.Это вызывает метод static
New
в классе String
.
C ++ (или STL) не имеет собственного класса String
, там равен a *Класс 1009 *, но у него нет метода ::New
.Вы должны убедиться, что читаете правильную документацию:)
Возможно, он унаследован от базового класса, поэтому убедитесь, что вы проверяете, является ли String
частью иерархии наследования.
Вот сделка со строкой v8.Это интересно.
Есть две реализации:
Просмотр внутреннего исходного кода String , String
действительно является объектом, выделенным в куче, представляющим строку Javascript.
Оказывается, пользовательский интерфейс Google Code не работает (возможно, у них максимальное количество символов?).Исходный код v8 :: internal :: HeapObject должен быть в src/objects.h
, но файл урезан.И видимый извне v8 :: String исходный код должен быть в include/v8.h
, но он тоже усекается.
Вы можете скачать исходный код и просмотреть файлы.Вот что он говорит:
/**
* A JavaScript string value (ECMA-262, 4.3.17).
*/
class V8EXPORT String : public Primitive {
public:
...
/**
* Allocates a new string from either utf-8 encoded or ascii data.
* The second parameter 'length' gives the buffer length.
* If the data is utf-8 encoded, the caller must
* be careful to supply the length parameter.
* If it is not given, the function calls
* 'strlen' to determine the buffer length, it might be
* wrong if 'data' contains a null character.
*/
static Local<String> New(const char* data, int length = -1);
/** Allocates a new string from utf16 data.*/
static Local<String> New(const uint16_t* data, int length = -1);
...
};