c++中的这种声明是什么意思
What means that kind of declaration in c++?
CSmth & CSmth::operator = (const CSmth & rhs)
{
return *this;
}
这是一个赋值运算符,因此您可以编写:
CSmth a;
CSmth b;
a = b;
实际执行除了返回对第一个增编的参考之外,没有任何用处。更标准的实现方式是:
CSmth & CSmth::operator = (const CSmth & rhs) {
if (this != &rhs) // protect against invalid self-assignment
{
do_whatever_required_to_copy_rsh_on_to_this;
}
return *this;
}
它是一个赋值运算符,用于将rhs
对象的值赋值给当前(this
(。然而,它还没有实施。
operator=是"复制指定运算符"。任何时候你看到
A a, b;
a = b;
在最简单的情况下,真正发生的是:
A & A::operator=(A const &rhs);
a.operator=(b);
对此进行分解:
- operator=是a的成员。运算符可以访问调用运算符的对象中的所有变量,也就是左手边变量
- operator=将对另一个a(赋值的右侧(的引用作为参数。良好的编码实践规定,您应该只从该函数中访问rhs的公共接口**
- operator=返回对a的引用,按照惯例,这是指赋值的左侧,或
*this
。此返回很重要,因为它允许您将分配链接为:A a, b, c, d; a = b = c= d;
对operator=的调用应该将右侧对象的状态"复制"到左侧对象中。因为看起来我们在做一项任务,所以这被称为"复制任务操作员">
**将一个变量表示为"private"会使该变量对该类而不是对该对象是私有的。您可以从复制分配操作符中完全访问传递对象的私有实现,但这不是一个好主意,因为它违反了对象封装等。
相关文章:
- C++避免重复声明的语法是什么
- 是什么原因导致它无法编译?它是声明签名还是在函数本身的实现中
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- 在将函数声明为友元时,尖括号的含义是什么?
- 如何声明一个标准::提升直方图的向量?提升直方图的类型是什么?
- 假设声明中某些上下文中需要的名称查找规则是什么
- 用相同的参数声明两个构造函数的最偶像化的方法是什么?
- C++中这个声明的向量是什么意思
- boost::hana 转发声明标头的用例是什么?
- 这个嵌套结构声明是什么意思?
- 以下的 c# dll 导入声明是什么?
- 这个 c++ 类声明是什么意思
- 这个C++函数声明是什么
- 请解释一下这个朋友声明是什么意思
- 函数调用前的类型声明是什么意思?
- 这个论点的声明是什么意思:"type (*name1) (const type& name2)"?
- c++中的这种声明是什么意思
- c++中的这种声明是什么意思?
- 以下声明是什么意思