effective c++条款15学习总结

    技术2025-07-13  15

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

        operator=的返回值必须可以作为一个输入参数被函数自己接受。在一个类c中,缺省版本的operator=函数具有如下形式(见条款45):

    c& c::operator=(const c&);

        一般情况下几乎总要遵循operator=输入和返回的都是类对象的引用的原则,然而有时候需要重载operator=使它能够接受不同类型的参数。例如,标准string类型    提供了两个不同版本的赋值运算符:

     

        string& // 将一个string

        operator=(const string& rhs); // 赋给一个string

     

        string& // 将一个char*

        operator=(const char *rhs); // 赋给一个string

     

        请注意,即使在重载时,返回类型也是类的对象的引用。

        c++程序员经常犯的一个错误是让operator=返回void,这好象没什么不合理的,但它妨碍了连续(链式)赋值操作,所以不要这样做。

     

        结论:当定义自己的赋值运算符时,必须返回赋值运算符左边参数的引用,*this。如果不这样做,就会导致不能连续赋值,或导致调用时的隐式类型转换不能进行,或两种情况同时发生。

     

    最新回复(0)