C++ 派生类的复制赋值运算符
我有一个从a派生的类B。a实现了复制构造函数和赋值运算符。我有B的复制构造函数,想为B实现赋值。我的方法(很可能不正确)是C++ 派生类的复制赋值运算符,c++,C++,我有一个从a派生的类B。a实现了复制构造函数和赋值运算符。我有B的复制构造函数,想为B实现赋值。我的方法(很可能不正确)是 B&B::operator=(常量B&other){ B tmp(其他); 标准:交换(*本,tmp); std::swap(m_成员,其他.m_成员); } 像这样的东西行吗?我在网上查找了std::swap到基类的专门化,但没有找到有用的东西。您可以检查这个stackoverflow线程(),了解如何从基类使用operator=from 我不明白的是你为什么要用swa
B&B::operator=(常量B&other){
B tmp(其他);
标准:交换(*本,tmp);
std::swap(m_成员,其他.m_成员);
}
像这样的东西行吗?我在网上查找了std::swap到基类的专门化,但没有找到有用的东西。您可以检查这个stackoverflow线程(),了解如何从基类使用operator=from 我不明白的是你为什么要用swap。相反,您应该这样做:
B& B::operator=(const B& other) {
A::operator = (other);
this->m_member = other.m_member;
return *this;
}
请让你的标题描述问题,而不仅仅是列出技术。它仍然只是命名一件事,而不是询问或描述一个问题。M_成员可以动态分配。我使用复制构造函数分配新内存,然后我试图只交换TMP的析构函数正确释放内存。如果使用C++ 11,尝试使用STD::UnQuyQPTR或STD::SyrdY-PTR。查看包含unique and shared_ptr视频的此页面:另一个解决方案是创建一个私有/受保护的方法来动态分配内存,并从构造函数和操作员调用它=
B& B::operator=(const B& other) {
A::operator = (other);
this->m_member = other.m_member;
return *this;
}