在 c++ 中为此对象分配内存
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) { }
相关文章:
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- C++ 如何在将新对象分配给另一个对象时创建新对象
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 为对象分配整数.输出将是什么?
- C++ 使用枚举类对象分配 std::map 值
- 如何在C++中为增加但记住删除先前对象的对象分配唯一标识符
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 为什么将两个对象分配给另一个对象后,两个对象不一样?
- 有没有办法在同名类 (c++) 中为对象分配一个指针变量
- 如何使用函数(而不是构造函数)将派生类对象分配给基类指针
- 是否可以使用 malloc 为类对象分配内存?
- 将对象分配给数组C++
- 我们可以在cpp中为对象分配函数吗
- 为模板参数类型中的新对象分配内存
- 我无法将对象分配给对象数组
- 对象分配-成员函数的使用无效错误
- 将派生对象分配给函数内的基类指针
- Arduino ESP32如何将BLEUUID对象分配到字符串中
- Rapidjson将密钥值从一个文档对象分配到另一个文档对象
- 奇怪的对象分配行为C