两个问题

x363635334 2013-04-17 07:48:37

String s1("ssss"),s2="nim";//一定不会调用operator=
s2=s1;//没有等号就调用拷贝构造(const String&) 有等号就先调用拷贝,再调用operator=

这是我跟踪的结果

赋值语句怎么调用了构造了? 编译器送的缺省的构造函数,和缺省的赋值函数是同一个吗
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
x363635334 2013-04-18
  • 打赏
  • 举报
回复
引用 4 楼 Idle_Cloud 的回复:
有时候你是必须实现operator=的。比如牵涉内存的问题。
什么叫牵涉内存,举例
ForestDB 2013-04-17
  • 打赏
  • 举报
回复
String s2="nim"; 这是初始化的语义而非赋值,故必然调用构造函数而不是operator=。
x363635334 2013-04-17
  • 打赏
  • 举报
回复
牵涉内存是什么?是不是指有成员变量是指针,那在构造里同样可以处理吧
Carl_CCC 2013-04-17
  • 打赏
  • 举报
回复
赋值语句怎么调用了构造了? 是的,要调用构造函数。 编译器送的缺省的构造函数,和缺省的赋值函数是同一个吗 是的,应该说对象赋值其实就是构造函数,同一个概念,在你没有重载operator=的时候 有时候你是必须实现operator=的。比如牵涉内存的问题。
x363635334 2013-04-17
  • 打赏
  • 举报
回复

String s1("ssss"),s2="nim";//调且仅调构造(const char*)
s2=s1;//若未重载等号则进入拷贝构造(const String&) 否则先进入构造,再进入operator=
要是这样的话提供各种构造就行了,永远不用重载等号了? 先问这个问题,别的问题我再摸索
derekrose 2013-04-17
  • 打赏
  • 举报
回复
问题似乎不是很清晰,抓一下重点
x363635334 2013-04-17
  • 打赏
  • 举报
回复
不是系统的string,自己随便定义了个String类

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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