[英]Allocating memory to this object in c++
我有一个名为Node
的类,它具有两个构造函数。 当我尝试从另一个调用构造函数并将其分配给调用者的指向的内存时,我没有收到任何错误。 但是,当我尝试分配在堆上分配的内存/对象使用new
来this
,我得到一个错误的表达是不可转让 。 以下是我的代码。 可能是什么原因?
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
指针,而right
是Node
(不是指针),就像您已经写过这样:
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.