Alb*_*lia 7 c++ standards operators
我想知道赋值运算符的默认实现是否检查自赋值,因此这两个实现中哪一个可以被认为最接近默认实现:
class A{
int x;
public :
...
// first one
A& operator=(const A& a){
if(this != &a) x = a.x;
return *this;
}
// second one
A& operator=(const A& a){
x = a.x;
return *this;
}
}
Run Code Online (Sandbox Code Playgroud)
我搜索过 C++ 标准,但我能找到的唯一一个就是这个,但是没有任何关于这个的内容
不,实现不检查“self”:
https://en.wikipedia.org/wiki/Assignment_operator_(C%2B%2B)
复制赋值运算符通常简称为“赋值运算符”,是赋值运算符的一种特殊情况,其中源(右侧)和目标(左侧)属于相同的类类型。
它是特殊成员函数之一,这意味着如果程序员没有声明它,编译器会自动生成它的默认版本。
默认版本执行成员复制,其中每个成员由其自己的复制赋值运算符(也可以是程序员声明的或编译器生成的)复制。