在命名空间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;}
时,它为什么不起作用?
&
不是=
答案 0 :(得分:2)
您已实施转换运算符:
operator std::string & (void) {return s;}
它基本上告诉编译器如何将MySpace::string
转换为std::string&
。
&
表示此处的引用,&#34; operator
&#34;你在这里超载是&#34; operator std::string
&#34;,而不是&#34; operator &
&#34;。 (这当然不是很迂腐)。
有关详细信息,请参阅: