提问人:Theo Mars 提问时间:12/28/2021 更新时间:12/28/2021 访问量:210
在 C++ 中,放置新和复制构造函数实现复制赋值运算符,这是一个好的做法吗?
In C++, placement new and copy constructor implementing copy assignment operator, is it a good practice?
问:
给定代码
struct Foo{
Foo(const Foo &other){
i = other.i;
};
Foo &operator=(const Foo &other){
if(this == &other){
return (*this);
}
new (this) Foo(other);
return (*this);
};
int i = 0;
};
struct Bar{
Bar &operator=(const Bar &other){
if(this == &other){
return (*this);
}
this->i = other.i;
return (*this);
};
Bar(const Bar &other){
(*this) = other;
};
int i = 0;
}
假设类中的所有内容都是可复制的,那么避免上述两种形式(类 Foo 和 Bar)中的一些重复代码(考虑具有大量成员的类)是否是一种好的做法,是否有任何潜在的危险? 如果是这样,哪一个更好?
答: 暂无答案
评论
Foo
Bar
int
std::string
std::string
std::string
std::string