关于自定义类的赋值

madpc 2017-04-06 03:08:47
有这样的一个自定义string类

#include <string>

class String : public std::string {
public:
String& operator= (const char*);
};

String& String::operator= (const char* s){
assign(s);
}

int main(){
String a = "aaa"; // 出错
}


为什么我不能这样赋值
String a = "aaa";
而只能
String a = (String)"aaa";

标准库的string就可以
std::string a = "aaa";
...全文
155 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdghchj 2017-04-06
  • 打赏
  • 举报
回复
声明时初始化用的等号实际上相当于小括号,即调用构造函数
paschen 版主 2017-04-06
  • 打赏
  • 举报
回复
String a = "aaa"; 调用的是构造函数,而不是赋值函数 你需要重载const char*为参数的构造函数,而不是operator= 以下语句才是执行赋值: String a; a = "aaa";

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧