条款10:令operator=返回一个reference to *this

下面是示例:

时间: 2024-12-12 03:29:58

条款10:令operator=返回一个reference to *this的相关文章

Effective C++ Item 10 令operator= 返回一个reference to *this

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:令赋值(assignment)操作符返回一个reference to *this --> 这样可以实现级联赋值 示例: #include <iostream> #include <string> using namespace std; class Widget{ public: Widget(int v):value(v){} Widget& opera

Effective C++ 条款九、十 绝不在构造和析构过程中调用virtual函数|令operator=返回一个reference to *this

  1.当在一个子类当中调用构造函数,其父类构造函数肯定先被调用.如果此时父类构造函数中有一个virtual函数,子类当中也有,肯定执行父类当中的virtual函数,而此时子类当中的成员变量并未被初始化,所以无法调用子类与之对应的函数.即为指向虚函数表的指针vptr没被初始化又怎么去调用派生类的virtual函数呢?析构函数也相同,派生类先于基类被析构,又如何去找派生类相应的虚函数? 2.做法:将子类的某个函数改为non-virtual,然后在子类构造函数中传递参数给父类函数.然后父类的构造函数

条款10:令operator=返回一个*this的引用

为了编程的简洁性,有时候需要串联赋值,如:x = y = z = 15; 由于赋值采用右结合,因此上述语句被解释为:x = (y = (z = 15)); 为了实现串联赋值,复制操作符函数必须返回一个指向操作符左侧实参的的引用,如下: 1 class Widget 2 { 3 public: 4 ... 5 Widget& operator=(const Widget& rhs) 6 { 7 ... 8 return *this; 9 } 10 ... 11 }; 注意: 这个规则不仅适用

[010]令赋值操作符返回一个reference to *this

差不多最经典的就是这个了: x = y = z = 15; 解读为: x = (y = ( z = 15)); 如果没有返回值,上述代码就不能通过编译. 其实看到标题就差不多明白这一条了,但是为什么连续赋值时最好让其返回一个reference to *this呢? 我们来举一个例子: 如果我们定义一个类R: R r1(3, 4);R r2;R r3(4, 3);cout << "r1 = " << r1 << ", r2 = "

Effective C++ Item10-令operator = 返回一个reference to *this

Item10-令operator = 返回一个reference to *this(Have assignment operators return a reference to *this) Ex: int x,y,z x=y=z=15;          //赋值连锁形式 赋值采用右结合律,所以上述连锁赋值被解析为:x=(y=(z=15)); 为了实现"连锁赋值",赋值操作符必须返回一个reference指向操作符的左侧实参,这是你为classes实现赋值操作符时应遵循的协议. E

Effective C++——条款10条,条款11和条款12(第2章)

条款10:    令operator=返回一个reference to *this Have assignment operators return a reference to *this 关于赋值,可以把它们写成连锁形式: int x, y, z; x = y = z = 15; // 赋值连锁形式 赋值采用右结合律,所以上述连锁赋值被解析为: x = (y = (z = 15)); 这里15先被赋值给z,然后其结果(更新后的z)再被赋值给y,然后其结果(更新后的y)再被赋值给x. 为了实现

effective C++ 读书笔记 条款10

条款10:  令operator= 返回一个reference to *this; 关于赋值,我们可以这样写: int  x,y,x; x =y = z; 这就是所谓的连续赋值 为了实现"连锁赋值"赋值操作符必须返回一个reference指向操作符的左侧实参.这是我们为class实现赋值操作符时应该遵循的协议: #include <iostream> using namespace std; class Widget { public: Widget() { cout<

《Effective C++ 》学习笔记——条款10

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 二.Constructors,Destructors and Assignment Operators Rule 10:Have assignment operators return a reference to *this 规则10:令operator= 返

Effective C++ 条款10

令operator= 返回一个reference to *this.  Have assignment operators return a reference to *this. 赋值时,我们可以写成如下形式: int x,y,z; x=y=z=10; 这种连锁方式采用右结合方式,也就是 x=(y=(z=10)); 为了实现这种连锁赋值,赋值操作符需要返回一个 *this. 这是一个协议,并不是强制性的.