[英]const and not const in copy constructor?
當我寫我的復制構造函數時:(HocSinh是一個類)
HocSinh::HocSinh(HocSinh &a)
{
hoTen = a.hoTen;
diemVan = a.diemVan;
diemToan = a.diemToan;
}
然后:
HocSinh hocSinh("abc", 1, 2);
vector <HocSinh> dsHSCanTim;
dsHSCanTim.push_back(hocSinh);
我收到一個錯誤:“沒有可用的復制構造函數或復制構造函數被聲明為'顯式'”。 但是當我寫道:
HocSinh::HocSinh(const HocSinh &a)
{
hoTen = a.hoTen;
diemVan = a.diemVan;
diemToan = a.diemToan;
}
沒有錯誤。 有人可以幫我解釋一下。 感謝大家,對不起,如果我的英語太糟糕了。
因為std::vector::push_back
被定義為
void push_back (const value_type& val);
void push_back (value_type&& val);
對於像hocSinh
這樣的左值, std::vector::push_back
模板將使用第一個模板。 在std::vector::push_back
實現中,復制構造函數用於構造std::vector
分配的內存段中的對象。 實現必須使用const value_type& val
作為此副本的源,因此它需要具有const
簽名的復制構造const
來獲取val
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.