类运算符'='定义

Class operator '=' definition

本文关键字:定义 运算符      更新时间:2023-10-16

在命名空间MySpace中,我已经创建了我的自定义字符串类:

namespace MySpace {
    const std::string bws = "hello";
    class string {
        public:
            std::string s ;
            string(void) :s(bws) {}
            string(const std::string & _s ) : s(bws) {};
            operator std::string & (void) {return s;}
    };
}

我把MySpace::string f赋值给std::string d

int main( int argc, char ** argv ) {
    MySpace::string f("ddd");
    std::string d=f;
    std::cout<<d<<std::endl;
}

为什么这个工作?我没有为MySpace::string定义操作符= ?

为什么当我从MySpace::string (operator std::string & (void) {return s;}行)删除操作符&定义时不起作用?

&不是=

您已经实现了一个转换操作符:

operator std::string & (void) {return s;}

它基本上告诉编译器如何将MySpace::string转换为std::string&

这里的&意味着引用,你在这里重载的"operator"是"operator std::string",而不是"operator &"。(这当然不是很迂腐)。

查看详细信息:

http://en.cppreference.com/w/cpp/language/cast_operator