`

条款15: 让operator=返回*this的引用

阅读更多
条款15: 让operator=返回*this的引用
这里的描述不想太多
标准格式是
string& operator=(const string& rhs);

尝试下const string& operator=(const string& rhs);
如果是 int i1, i2, i3;
(i1=i2)=i3; //i3给i1出错

string& operator=(string& rhs);
对普通的类型可以,但是如果是常数呢?
x = "hello";
这里的hello必须是个const的临时对象

最大的争论是对函数的返回值
string& string::operator=(const string& rhs)
{
  ...
  return *this;            // 返回左边的对象
}

string& string::operator=(const string& rhs)
{
  ...
  return rhs;              // 返回右边的对象
}


如果单从效果来讲,两者是一样的。从语法来看return rhs是通不过的,如果改成string& rhs,那么对临时对象又无可奈何
1
0
分享到:
评论
1 楼 lin_style 2008-02-05  
还有类似
cout<<i<<y<<
这样的连续符

相关推荐

    Effective.C++.中文第二版.50条款doc文档.chm

    条款15: 让operator=返回*this的引用 条款16: 在operator=中对所有数据成员赋值 条款17: 在operator=中检查给自己赋值的情况 第四章 类和函数:设计与声明条款 条款18: 争取使类的接口完整并且最小 条款19: 分清成员...

    effective c++

    6. **条款6:总是重载`operator=** **以返回一个引用** - 返回`*this`的引用允许链式赋值。 7. **条款7:为`operator=`确保对象的一致性** - 赋值操作应确保对象在操作前后处于一致状态,遵循“交换赋值”等效性...

    高效C++:从C到C++

    **条款23:必须返回一个对象时不要试图返回一个引用** - **背景**:当函数返回一个临时对象时,不应返回该对象的引用。 - **原因**:返回一个临时对象的引用会导致不确定的行为。 - **示例**: ```cpp MyClass ...

    EffectiveC++终稿44__tagged_2019-06241

    **条款 15:在资源管理类中提供对原始资源的访问** 有时需要直接访问资源,因此资源管理类应提供安全的方法来获取原始资源,同时避免误用。 **条款 16:成对使用 new 和 delete 时要采取相同形式** 动态分配内存...

    Effective_C++

    **条款15:让operator=返回*this的引用** - **目的**: 支持连续赋值。 - **解释**: 操作符重载`operator=`应该返回一个对当前对象的引用,这样就可以支持连续赋值操作,例如`a = b = c;`。这可以增强代码的可读性和...

    Effective C++ 中文版

    10. 条款10:令operator=返回一个当前对象的引用 - 重载赋值运算符应该返回*this的引用,使得连续赋值成为可能。 11. 条款11:在operator=中处理“自我赋值” - 在赋值运算符实现中需要检查自我赋值的情况,以...

    Effective C++

    12. **让operator=返回*this的引用**: 这样的设计允许链式赋值,例如`a = b = c;`。返回*this的引用也意味着如果赋值操作失败,对象不应被改变,而是返回一个无效的引用。 以上只是《Effective C++》中部分重要...

    Effective C++中文第三版

    11. 条款10:令operator=返回一个指向 *this的引用 - 为类重载赋值运算符时,应该返回当前对象的引用。 - 这样做可以实现连贯的赋值,例如a = b = c。 12. 条款11:在operator=中处理“自我赋值” - 在实现赋值...

    Effective C++学习笔记

    10. **赋值函数返回一个引用指向*this**:返回*this可以使连续赋值(如a = b = c)成为可能,也符合C++的习惯用法。 11. **在operator=中处理“自我赋值”**:自我赋值可能导致问题,因此赋值运算符应首先检查左侧...

    Effective C++.doc

    条款15和16提醒我们在`operator=`中返回`*this`引用并全面赋值,条款17则关注自我赋值的特殊情况。 设计良好的类是C++的关键。条款14至17指导我们创建有效且易于使用的类,包括考虑对象创建、初始化、复制和清理的...

    effecitve C++(中文版)

    条款15告诫程序员,让赋值操作符返回一个指向`*this`的引用,可以实现链式赋值并保持语义的一致性。 这本书深入浅出地讲解了C++编程中的许多核心概念,对于想要提升C++编程技巧的开发者来说是一份宝贵的资源。通过...

Global site tag (gtag.js) - Google Analytics