C ++需要Header中的类声明帮助

时间:2017-04-11 03:08:15

标签: c++ class header declaration

我在试图理解下面的代码时感到困惑。

  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&);
   };
  1. 行:&#34; ~Utf8Value();&#34; 当我检查cpp文件时,它只包含一行:

     String::Utf8Value::~Utf8Value() {
       i::DeleteArray(str_);
     }
    
  2. 这是否意味着该功能是删除char* str_?有什么理由为什么在函数名之前得到~?我可以将其重命名为其他名称而不是~Utf8Value吗?

    1. 行:const char* operator*() const { return str_; } 它有什么作用?为什么函数名后面有*? 我对const的理解是,fucntion /变量永远不会改变,但括号后面的第二个const是什么意思?

    2. 行:Utf8Value(const Utf8Value&); 它是另一个构造函数,如第一行explicit Utf8Value(Local<v8::Value> obj);

    3. 行:void operator=(const Utf8Value&); 我不知道这条线正在尝试做什么。

    4. 任何人都可以帮我吗?任何帮助将非常感激! 谢谢!!

1 个答案:

答案 0 :(得分:0)

在您尝试阅读更大的项目源代码之前,您似乎并不了解C ++语法。

问题:

  1. 类声明(范围)中以'〜'开头的函数是类对象的Destroy函数,它在对象死亡或删除时自动调用。在这种情况下,Utf8Value的对象(让我们在下一个称它为对象)已经持有一个str_指向某个需要在主机被破坏时释放的地方。得到给予,给予得到。最后,你不能重命名它。

  2. 此行声明将此对象视为char *字符串时的行为。它在这里做了什么在C ++中调用操作符覆盖,大多数操作符可以设计为你想要的,如算术,比较,移位等。这是C ++的一个非常特殊的特性。对于'const'函数,它意味着此函数不会更改此对象中的某些内容。

  3. 是。但由于它是在私有范围内声明的,因此不能从对象或其他构造函数中调用它。一般来说,它被设计为禁止以设计者不想要的方式构造对象。

  4. 在尝试停止从值赋值构建对象时,它就像问题3一样。