繁体   English   中英

在C ++中为该对象分配内存

[英]Allocating memory to this object in c++

我有一个名为Node的类,它具有两个构造函数。 当我尝试从另一个调用构造函数并将其分配给调用者的指向的内存时,我没有收到任何错误。 但是,当我尝试分配在堆上分配的内存/对象使用newthis ,我得到一个错误的表达是不可转让 以下是我的代码。 可能是什么原因?

class Node{
    private:
       int key;
       Node* left, *right;
    public:
       Node(){
           left=NULL;
           right= NULL;
       }

       Node(int data){
           this=new Node(); // generates error 'expression is not assignable'
           *this= Node();   //compiles succesfully
           this->key=data;   
       }
}

C ++ 11允许委派构造函数

class Node {
    private:
       int key;
       Node* left, right;

    public:
       Node() {
           left = NULL;
           right = NULL;
       }

       Node(int data) : Node() {
           this->key=data;   
       }
};

关于您的代码的其他一些注释:


Node* left, right;

这声明left是指向Node指针,而rightNode (不是指针),就像您已经写过这样:

Node* left;
Node right;

这就是为什么将星号放在变量的左边而不是类型的右边的原因:

Node *left, *right;

或者,甚至更好:

Node *left;
Node *right;

left = NULL;

在C ++ 11中,使用nullptr而不是NULL 无论如何,您应该使用初始化列表:

Node() : left(nullptr), right(nullptr) { }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM