字符串类常见

来源:互联网 发布:淘宝网金丝绒套装 编辑:程序博客网 时间:2024/06/03 19:16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
classCalc
{
private:
    intm_nValue;
 
public:
    Calc() { m_nValue = 0; }
 
    voidAdd(intnValue) { m_nValue += nValue; }
    voidSub(intnValue) { m_nValue -= nValue; }
    voidMult(intnValue) { m_nValue *= nValue; }
 
    intGetValue() { returnm_nValue; }
};
如果你想添加5减去3乘以4你会这样做

1
2
3
4
Calc cCalc;
cCalc.Add(5);
cCalc.Sub(3);
cCalc.Mult(4);
然而,如果我们让每一个函数返回*this,我们可以链召集。这里是的新版本链式功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
classCalc
{
private:
    intm_nValue;
 
public:
    Calc() { m_nValue = 0; }
 
    Calc& Add(intnValue) { m_nValue += nValue; return*this; }
    Calc& Sub(intnValue) { m_nValue -= nValue; return*this; }
    Calc& Mult(intnValue) { m_nValue *= nValue; return*this; }
 
    intGetValue() { returnm_nValue; }
};

我们已经有效地凝聚成一个三行的表达!让我们仔细看看它是如何工作的

首先,CCalc。添加(5)称,这增加了我们的m_nvalue 5。add()然后返回*this,这是一个参考CCalc。我们的表达是现在CCalc。子(3)、(4)。CCalc。子(3)减去3从m_nvalue返回CCalc。我们的表达是现在CCalc多(4)。CCalc。多(4)乘以4,返回m_nvalue CCalc,然后被忽视。然而由于每个函数修改CCalc执行,CCalc现在包含值(0 + 5)3)* 4)这是8

虽然这是一个很牵强的例子链接功能,以这样的方式与字符串类常见。例如,它是可能的过载运算符来做一个字符串追加。如果运算符返回*this就可能这样的表达式

这是很容易能够做到见效益!我们将覆盖重载运算符和其他运营商在未来教训

带走这节课最重要的一点是,“这是任何成员函数指针的一个隐藏的参数。大多数时候,你将不需要直接访问它。值得注意的是,“这是一个const指针-你可以改变其所指向的对象但是你不能点别的东西


0 0