`

条款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++

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

    为什么operator=操作符返回引用.docx

    为什么operator=操作符返回引用

    C++ HTTP - Reset32

    rest32======rest32是从C + +的Windows上调用REST Web服务](http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services)库。...这将是一段时间,在此之前,生产准备,但我是饲料中的公共...

    C++ HTTP Reset32

    C++ HTTP Reset32,HTTP可安装项目,提供大家下载!

    摩托罗拉C++面试题

    子类继承父类大部分的资源,不能继承的有构造函数,析构函数,拷贝构造函数,operator=函数,友元函数等等 15.为什么要引入抽象基类和纯虚函数? 主要目的是为了实现一种接口的效果。 16.介绍一下模板和容器。如何...

    用C++编写的分数加减乘除的运算

    fen operator+(fen &f1); fen operator=(fen &f1); private: int a,b; }; fen fen::operator +(fen &f1) { int x,y,g(1); x=a*f1.b+b*f1.a; y=b*f1.b; for(int j=2;j;j++) if(x%j==0&&y%j==0&&j) g=(g&gt;j?...

    006_OSQP: An Operator Splitting Solver forQuadratic Programs

    006_OSQP: An Operator Splitting Solver forQuadratic Programs osqp原理推到及实现文档

    c++基础面试题

    String& String::operator=(const String &rhs) { if ( this==&rhs) return*this ; delete []m_data; //删除原来的数据,新开一块内存 m_data =newchar[strlen(rhs.m_data) +1]; strcpy(m_data,rhs.m_data); ...

    shell脚本报错:"[: =: unary operator expected"解决办法

    主要介绍了shell脚本报错:"[: =: unary operator expected"解决办法的相关资料,需要的朋友可以参考下

    Effective C++(第三版)

    条款15:在资源管理类中提供对原始资源的访问 provide access to raw resources in resource-managing classes. 条款16:成对使用new和delete时要采取相同形式 use the same form in corresponding uses of new and ...

    解析c++中的默认operator=操作的详解

    在c++中,如果没有定义operator=操作,编译器会提供一个默认的operator=操作。由于operator=操作和拷贝构造函数的功能类似,都执行拷贝操作。因此,编译器也分提供无用的默认operator=操作和非无用的默认operator=...

    shell脚本报错:”[: =: unary operator expected”解决办法

    shell脚本报错:”[: =: unary operator expected”解决办法  在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == OK ]; then echo OK fi  在运行时出现了 [: =: unary operator expected 的错误,就...

    operator=赋值检测学习

    operator=赋值自我检测,小程序,给自己参考学习

    Effective C++ 中文版

    条款10:令Operator=返回一个referenceto this 条款11:在Operator=中处理“自我赋值” 条款12:复制对象时勿忘其每一个成分 3.资源管理 条款13:以对象管理资源 条款14:在资源管理类中小心Coping行为 条款15...

    string类的常用方法.pdf

    • operator=(const char* str): 将C风格字符串赋值给字符串。 ◦ operator=(const string& other): 复制另一个字符串。 3. 字符串连接: • append(const char* str): 连接一个C风格字符串到当前字符串的末尾。 ◦...

    错误:unexpected operator.docx

    错误:unexpected operator.docx

    多项式的加减乘除四则运算

    const Polynomial& Polynomial::operator=(const Polynomial &p)//完成测试 { if(this!=&p) { delete []coefs; delete []exps; size = p.size; coefs = new double[size]; exps = new int[size]; for...

    浙江大学 C语言 期末测试

    浙江大学2004-2005学年冬季学期 《C Programming》课程期末考试试卷

    重载赋值运算符

     operator= 必须重载为成员函数 重载函数原型为:  类型 & 类名 :: operator= ( const 类名 & ) ; 案例:完善Name类,支持=号操作。     具体看如下代码: #define _CRT_SECURE_NO_WARNINGS #include ...

Global site tag (gtag.js) - Google Analytics