关于类的组合的问题

Hachin 2014-05-06 07:45:03
http://wenku.baidu.com/link?url=cCyzARPP2WBU6TdGq_bk33skDce0foRAfpYwY4XNYVWuAJgW6CzL1TbDq4JFHqysBhWJMqy1MJBGA4Nz9T3ZvGISyCD2FyO3ZnSE5eNTPQO

例子就是这个

Distance::Distance(Point a,Point b)
:p1(a),p2(b)


为什么一定要加一行:p1(a),p2(b)??把ab复制给P1P2

还有为什么拷贝构造函数被调用了四次?不应该两次吗
...全文
87 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
乐百川 2014-05-06
  • 打赏
  • 举报
回复
请看看类的初始化列表
buyong 2014-05-06
  • 打赏
  • 举报
回复
引用 楼主 a302800411 的回复:
http://wenku.baidu.com/link?url=cCyzARPP2WBU6TdGq_bk33skDce0foRAfpYwY4XNYVWuAJgW6CzL1TbDq4JFHqysBhWJMqy1MJBGA4Nz9T3ZvGISyCD2FyO3ZnSE5eNTPQO 例子就是这个
Distance::Distance(Point a,Point b)
:p1(a),p2(b)
为什么一定要加一行:p1(a),p2(b)??把ab复制给P1P2 还有为什么拷贝构造函数被调用了四次?不应该两次吗
变量初始化
废玻璃渣 2014-05-06
  • 打赏
  • 举报
回复
Distance::Distance(Point a,Point b) //这里a, b是值传递, 值传递有复制开销,所以各调用一次拷贝构造 :p1(a),p2(b) //a,b的值赋给p1,p2, 各调用一次拷贝构造 所以加起来是四次 从这里可以看出楼主对值传递,引用传递,指针传递理解还不透彻,补充如下: 值传递,传的是参数的一个副本,有复制开销(调用拷贝构造) 引用传递,传的是参数本身,无复制开销 指针传递,传的是参数的地址,无复制开销 所以通常情况下尽量采用引用传递或者指针传递,他们开销更小
ningto.com 2014-05-06
  • 打赏
  • 举报
回复
要使用a,b传进来的参数所以把它保留在成员变量里; 四次是因为有两个Point,每个Point两次,传参是一次,然后赋值给成员变量一次

65,209

社区成员

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

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