我在试图理解下面的代码时感到困惑。
class V8_EXPORT Utf8Value {
public:
explicit Utf8Value(Local<v8::Value> obj);
~Utf8Value();
char* operator*() { return str_; }
const char* operator*() const { return str_; }
int length() const { return length_; }
private:
char* str_;
int length_;
Utf8Value(const Utf8Value&);
void operator=(const Utf8Value&);
};
行:&#34; ~Utf8Value();&#34; 当我检查cpp文件时,它只包含一行:
String::Utf8Value::~Utf8Value() {
i::DeleteArray(str_);
}
这是否意味着该功能是删除char* str_
?有什么理由为什么在函数名之前得到~
?我可以将其重命名为其他名称而不是~Utf8Value
吗?
行:const char* operator*() const { return str_; }
它有什么作用?为什么函数名后面有*
?
我对const
的理解是,fucntion /变量永远不会改变,但括号后面的第二个const
是什么意思?
行:Utf8Value(const Utf8Value&);
它是另一个构造函数,如第一行explicit Utf8Value(Local<v8::Value> obj);
?
行:void operator=(const Utf8Value&);
我不知道这条线正在尝试做什么。
任何人都可以帮我吗?任何帮助将非常感激! 谢谢!!
答案 0 :(得分:0)
在您尝试阅读更大的项目源代码之前,您似乎并不了解C ++语法。
问题:
类声明(范围)中以'〜'开头的函数是类对象的Destroy函数,它在对象死亡或删除时自动调用。在这种情况下,Utf8Value的对象(让我们在下一个称它为对象)已经持有一个str_指向某个需要在主机被破坏时释放的地方。得到给予,给予得到。最后,你不能重命名它。
此行声明将此对象视为char *字符串时的行为。它在这里做了什么在C ++中调用操作符覆盖,大多数操作符可以设计为你想要的,如算术,比较,移位等。这是C ++的一个非常特殊的特性。对于'const'函数,它意味着此函数不会更改此对象中的某些内容。
是。但由于它是在私有范围内声明的,因此不能从对象或其他构造函数中调用它。一般来说,它被设计为禁止以设计者不想要的方式构造对象。
在尝试停止从值赋值构建对象时,它就像问题3一样。