一次运算符重载的思考

mac2022-06-30  21

一次运算符重载的思考

// // Created by root on 19-10-2. //

#ifndef LOGSENTRY_CSTRINGBUFFER_H #define LOGSENTRY_CSTRINGBUFFER_H

#endif //LOGSENTRY_CSTRINGBUFFER_H

一开始是这样的

    namespace service {         class CStringBuffer {         public:         CStringBuffer(const char* string);

        CStringBuffer operator<<(const char* string)         {             ourString = ourString.append(string);             std::cout<<"ourString:"<<ourString<<std::endl;             return *this;         }         std::string ourString;         std::string getBuffer();

        private:         };     }      但是出现的问题是

    CStringBuffer buf("aaaa");     buf<<"bbbbbbb"<<"cccccc"<<"dddddddddd";     ;     cout<<buf.getBuffer()<<endl;         每次运算符重载之后都返回了一个新的函数地址        但是当我们加入引用之后            //     // Created by root on 19-10-2.     //

    #ifndef LOGSENTRY_CSTRINGBUFFER_H     #define LOGSENTRY_CSTRINGBUFFER_H

    #endif //LOGSENTRY_CSTRINGBUFFER_H

    namespace service {         class CStringBuffer {         public:         CStringBuffer(const char* string);

        CStringBuffer& operator<<(const char* string)         {             ourString = ourString.append(string);             std::cout<<"ourString:"<<ourString<<std::endl;             return *this;         }         std::string ourString;         std::string getBuffer();

        private:         };     }      每次返回的都是一个地址

总结:

    一、什么是引用(就是一直使用的是同一块内存地址)     引用,顾名思义是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价

    语法:类型 &引用名=目标变量名;     特别注意:

    1.&不是求地址运算符,而是起标志作用

    2.引用的类型必须和其所绑定的变量的类型相同

最新回复(0)