[英]Variable declaration and assignment inside a constructor in C++
對於以下代碼:
class mgraph
{
private:
int n;
vector <vector <int>> vec;
public:
mgraph(int);
void connect(int, int, int);
void disconnect(int, int);
void isconnected(int, int);
void AddNode();
void show();
};
mgraph::mgraph(int nodes)
{
n = ++nodes;
vector <vector<int>> vec(n, vector<int>(n, 0));
this -> vec = vec;
}
為什么分配給 vec (使用此指針)的 vec 不會在構造函數的任務結束后立即銷毀。 這樣做后我得到了所需的值(不是垃圾值),但是在構造函數的任務結束后,在構造函數中創建的向量 vec 不應該被銷毀嗎?
你是對的, vec
是一個自動變量,所以它的范圍僅限於構造函數。 它的生命周期因此在退出構造函數時結束並被銷毀。
然而,該行
this -> vec = vec;
是副本分配。 vec
的內容被復制到this->vec
, std::vector
的實現負責處理。 所以本地vec
發生了什么不再重要,從現在開始this->vec
有自己的副本。
你提到指針......不涉及指針。 只是一些復制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.