可以重载赋值运算符以将字符串文字分配给用户定义的字符串类型吗?

can an assignment operator be overloaded to assign a string literal to a user definded string type?

第一部分是网络示例

作业:

您可以将 C++ 字符串、C 字符串或 C 字符串文字分配给 C++ 字符串。

示例:

string s1 = "original string";
string s2 = "new string";
char s3[20] = "another string";

s1 = s2;//s1 changed to "new string"
s1 = s3;//s1 changed to "another string"
s1 = "yet another string";
   //s1 changed to "yet another string"
   //Once again, this works because.
   //operator overloading.

下面是我的技术问题

class my_string{
public:
.
.
my_string& operator=(const my_string&);
.
.
.
};

如果这是唯一的作业 允许运算符重载然后如何 上例中 s1 是否得到 "yet another string" 的值?

如果我没有正确理解你的问题,那是因为它不是唯一的赋值运算符,还有其他重载定义。这些是针对 C++98 的,还有一些是针对 C++11 的。

string& operator= (const string& str);
string& operator= (const char* s);
string& operator= (char c);

http://www.cplusplus.com/reference/string/string/operator=/

s1 = "yet another string"; 使用列表中的第二个运算符,而 s1 = s2; 使用第一个。

理论上,我们必须像这样提供一个重载的赋值运算符:

string& operator= (const char* s);

但是我测试过了。没有它也没关系。

int main()
{
    mystring s = "assss";
    cout << s << endl;
    s = "aaaaaaaaa";
    cout << s << endl;
    system("pause");
    return 0;
}

也许编译器会调用这个:mystring(const char * st); 然后创建一个临时对象,将其分配给 s1.