請看看下面的代碼:什麼時候分配和初始化變量?
template <typename T>
class matrix
{
private:
std::vector<T> vec_;
public:
matrix(size_t rows , size_t cols) : rows_(rows) , cols_(cols) , vec_(rows_ * cols_)
{
}
size_t rows_;
size_t cols_;
};
這是聲明一個類的方法。我只是想知道std::vector
被分配的位置以及它正在初始化的位置?
當我聲明變量時會發生什麼?在構造函數被調用或在構造函數中分配並初始化之前,它是否在堆棧中分配空間?
是什麼聲明矢量大小爲10
std::vector<T> vec_(10);
,並呼籲vec_的構造與構造尺寸10之間的區別?
matrix() : vec_(10)
我想了解如何在C++中分配和初始化對象。
我也無需調用的std::vector
matrix() {}
這到底是怎麼發生的構造函數創建一個構造?因爲我不是調用vector的構造函數,編譯器會調用它自己的嗎?可以使用矢量對象嗎?還是自動調用,因爲我宣稱std::vector
是我班的變量?
還初始化爲std::vector vec(10)
,與調用resize/reserve具有相同的效果。哪一個更接近?
「這是一種聲明類的方法」 - 不。這是**模板**的定義;該模板是用於定義類的模式。 –