当我写我的复制构造函数时:(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);
我得到了一个错误:“没有可用的复制构造函数或复制构造函数被声明为'explicit'”。但是当我写下以下内容时:
HocSinh::HocSinh(const HocSinh &a)
{
hoTen = a.hoTen;
diemVan = a.diemVan;
diemToan = a.diemToan;
}
没有错误。 请问有人能为我解释一下吗?感谢大家,如果我的英语很糟糕,请见谅。
HocSinh
是你的类的名称,那你为什么要执行dsHSCanTim.push_back(HocSinh);
?push_back
需要一个HocSinh
对象。 - P0WHocSinh hocSinh("abc", 1, 2);
并且 push_back(hocSinh)。 - Phùng Khánh Hiênconst
。您的复制构造函数不会修改其参数,因此它可以是const
,因此应该是const
。这确保它可以接受 const 和非 const 对象。 - Oktalist