对重载的‘MyString()’的调用有歧义

string.cpp: 在成员函数‘MyString MyString::operator+(const MyString&) const’中:
string.cpp:50:14: 错误: 对重载的‘MyString()’的调用有歧义
string.cpp:50:14: 附注: 备选是:
string.cpp:15:1: 附注: MyString::MyString(const char*)
string.cpp:6:1: 附注: MyString::MyString(char)
string.cpp: 在成员函数‘MyString MyString::operator+(const char*) const’中:
string.cpp:67:14: 错误: 对重载的‘MyString()’的调用有歧义
string.cpp:67:14: 附注: 备选是:
string.cpp:15:1: 附注: MyString::MyString(const char*)

string.cpp:6:1: 附注: MyString::MyString(char)



头文件中参数赋默认值了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,可以参考下面的示例代码: ```c++ #include <iostream> #include <cstring> using namespace std; class mystring { private: char* str; public: mystring() { str = NULL; } mystring(const char* s) { int len = strlen(s); str = new char[len + 1]; strcpy(str, s); } mystring(const mystring& other) { int len = strlen(other.str); str = new char[len + 1]; strcpy(str, other.str); } ~mystring() { if (str != NULL) { delete[] str; str = NULL; } } mystring& operator=(const mystring& other) { if (this != &other) { if (str != NULL) { delete[] str; str = NULL; } int len = strlen(other.str); str = new char[len + 1]; strcpy(str, other.str); } return *this; } friend ostream& operator<<(ostream& os, const mystring& s) { os << s.str; return os; } }; int main() { mystring s1("Hello"); mystring s2 = "World"; mystring s3(s1); cout << "s1: " << s1 << endl; cout << "s2: " << s2 << endl; cout << "s3: " << s3 << endl; s2 = s1; cout << "s2: " << s2 << endl; return 0; } ``` 在上面的代码中,我们自定义了一个字符串类 `mystring`,并实现了运算符 `=` 的重载。在 `operator=` 函数中,我们首先判断是否为自赋值,如果不是,就先释放原有的内存空间,再申请新的内存空间,并将字符串拷贝到新的内存中。 在 `main` 函数中,我们创建了三个 `mystring` 类型的对象 `s1`、`s2` 和 `s3`,并通过重载的 `<<` 运算符输出它们的值。然后将 `s1` 赋值给 `s2`,并再次输出 `s2` 的值,可以看到 `s2` 的值已经变成了 `Hello`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值