我有一個叫做Node
的類,它有兩個構造函數。當我嘗試從另一個調用其中一個構造函數並將其分配給調用者指向的內存時,我不會收到任何錯誤。但是,當我嘗試使用new
到this
分配堆上分配的內存/對象時,我收到一個錯誤表達式不可分配。以下是我的代碼。可能的原因是什麼?在C++中爲這個對象分配內存
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;
}
}
順便說一下你的第二行(*此=節點();)是創建一個臨時Node對象,然後使用編譯器提供的默認賦值運算符(節點::運算符= (const Node&))將臨時節點的狀態複製到第一個節點對象的狀態,然後銷燬該臨時節點對象。這很有效,但我認爲你會避免這種情況,並直接初始化成員值。 –
@JeremyFriesner *「你不能從C++的另一個構造函數中調用一個構造函數」* - 你可以在C++ 11中。 – cdhowie
@cdhowie你是對的,我忘記了:) –