【发布时间】:2017-11-30 15:39:45
【问题描述】:
我正在尝试用 C++ 实现 C# 风格的字符串。 我为 String 类创建了一个对象和一个指针,并将该对象分配给该指针。当我尝试通过指针修改对象而不是修改现有对象时,我想创建一个新对象并使指针指向它。
所以我重载了“=”运算符,并在运算符重载方法中创建了一个新对象。为了反映更改我需要使用ss=*ss = "name";
任何改进此代码的建议。
下面是我的示例代码
class String
{
char *str;
public:
String(char* str_in)
{
str = new char[strlen(str_in)];
strcpy(str, str_in);
}
String* operator=(char* s)
{
return new String(s);
}
};
int main()
{
String s="sample";
String *ss;
ss = &s;
ss=*ss = "name";
return 0;
}
我也尝试修改 this 指针,但没有按预期工作
String *ptr;
ptr = const_cast<String*>(this);
ptr = new String(s);
【问题讨论】:
-
这是一种运动吗?
std::string在您的情况下不可用吗? -
是的,这只是一个练习。
-
ss=*ss = "name";无法编译。 -
它按预期编译和工作
标签: c++ operator-overloading this