2
這是我嘗試瞭解類初始化如何工作。我不確定所有事情,這就是爲什麼我問這個問題。這就是我相信,當我們做了以下情況:瞭解初始化過程
T t = u;
從
u
構造T
類型的對象。這則變爲:T t = T(u);
調用拷貝構造函數:
T t(T(u));
好了,二是我不理解的部分。我在某處讀到T t = u
被製成T t(T(u))
。但是,如果這爲什麼不打印不「拷貝構造函數」這是真的:
struct T
{
template <class U>
T(U) {
std::cout << "constructs an object of type T...\n";
}
T(T const &)
{
std::cout << "copy-constructor";
}
T& operator=(T const &)
{
std::cout << "assignment operator"; return *this;
}
T() = default;
};
int main()
{
T t(T(5));
}
其實,這一切確實是打印「構建類型T的對象」。爲什麼不是在這裏調用的複製構造函數? T(5)
可以製作成類型爲T const &
的對象,該對象被傳遞給T
的構造函數,所以不應調用適當的構造函數。
我真的很想知道這個。我一直試圖理解這一點。
謝謝,我的頭現在感覺好多了。 – user2030677 2013-04-07 17:16:42