C++需要标头中类声明的帮助
C++ Need Help for Class Declaration in Header
>我在尝试理解以下代码时陷入困境。
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&);
};
行: "~utf8Value();" 当我检查 cpp 文件时,它只包含一行:
String::Utf8Value::~Utf8Value() { i::DeleteArray(str_); }
这是否意味着该功能是删除char* str_
?有什么原因为什么在函数名称之前有一个~
?我可以将其重命名为其他名称而不是~Utf8Value
吗?
行:
const char* operator*() const { return str_; }
它有什么作用?为什么函数名称后有一个*
? 我对const
的理解是功能/变量永远不会改变,但是括号后面的第二个const
是什么意思?行:
Utf8Value(const Utf8Value&);
它是另一个像第一行explicit Utf8Value(Local<v8::Value> obj);
这样的构造函数吗?行:
void operator=(const Utf8Value&);
我不知道这条线想做什么。
谁能帮我解决这个问题?任何帮助将不胜感激! 谢谢!!
在尝试阅读一些更大的项目源代码之前,您似乎不太了解C++语法。
对于您的问题:
-
类声明(范围)中以"~"开头的函数是类对象的 Destroy 函数,当对象死亡或删除时会自动调用。在这种情况下,Utf8Value 的对象(让我们在下一个称之为对象)一直持有一个指向主机销毁时需要释放的某个地方的str_。得到给予,给予得到。最后,您无法重命名它。
-
此行声明将此对象视为 char* 字符串时的行为。它在这里做了什么,在C++中调用运算符覆盖,大多数运算符都可以设计为您想要的,例如算术、比较、移位等。这是C++的一个非常特殊的特征。对于"const"函数,这意味着此函数不会更改此对象中的某些内容。
-
是的。但由于它是在私有范围内声明的,因此不能从对象或其他构造函数中调用它。一般来说,它旨在禁止以设计师不想要的方式构造对象。
-
它的工作方式类似于问题 3,同时尝试停止从值赋值构造对象。
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 需要帮助设置在C++中使用的Potrace
- 错误:未在此范围内声明'reverse'
- 在指针的帮助下,文本文件中单词的频率
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- C++需要所有声明的类型说明符和预期的非限定 id(需要调试帮助)
- C++需要标头中类声明的帮助
- 在哪里/如何声明和实现必须由成员方法使用的帮助函数
- 请帮助我理解这个带有参数的C++参数声明
- 需要帮助理解与朋友声明有关的段落
- 需要帮助无法弄清楚为什么我的头文件函数声明不起作用
- 需要帮助理解的概念:为什么在头文件中声明一个函数,而在源文件中定义它
- 带有 NDK 平台的 C++ 错误帮助 '_IOR' 未在此范围内声明
- 帮助在C++中声明和使用动态分配的数组