"因为拷贝构造函数实现传值方式的参数传递和返回,",不理解,期待专家。

夜的眼2021 2013-01-16 06:13:49
"Because the copy-constructor implements pass and return by value,......"
- think in c++


"因为拷贝构造函数实现传值方式的参数传递和返回,",不理解,期待专家。
...全文
364 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜的眼2021 2013-01-22
  • 打赏
  • 举报
回复
哎,还是模糊不清的。 结贴吧
BadPattern 2013-01-18
  • 打赏
  • 举报
回复
翻译的烂,按effective c++中说法是: copy构造函数定义了一个对象如何passed by value,函数参数的传递和返回就是对象passed by value的过程
myjackheroes 2013-01-18
  • 打赏
  • 举报
回复
可以肯定的是copy constructor没有返回参数,而且我测试过,编译器合成的默认构造也不会以值来传递. 虽然做这种测试已经是很傻了. 看了10几分钟.作者说得是这句 // Pass and return BY VALUE: HowMany f(HowMany x) { x.print("x argument inside f()"); return x; } "Because the copy-constructor implements pass and return by value, it’s important that the compiler creates one for you in the case of simple structures – effectively, the same thing it does in C." 作者意思就是,复制构造会在以值的方式进行传参和以值返回的情况下发生.所以就编译器来说,对普通的struct创建默认的复制构造函数,这很重要.实际上,在C语言中编译器就是这么做的. 原话是应该少了个when Because the copy-constructor implements (when) pass and return by value
zsdt345a780rfajwet 2013-01-18
  • 打赏
  • 举报
回复
我想问一下,关于拷贝构造函数,因为参数是引用,但是我手头上只有一个指向那个对象的指针,所以我想以这个指针作为参数,那么我该怎么写,或者说怎么用呢?
Defonds 2013-01-18
  • 打赏
  • 举报
回复
引用和传递的区别
夜的眼2021 2013-01-17
  • 打赏
  • 举报
回复
又纠结了。 那么不都是传值的方式了? 还有其他的方式吗?
FrankHB1989 2013-01-17
  • 打赏
  • 举报
回复
传递返回值是copy-initialization,对于类类型的值调用copy/move ctor。
夜的眼2021 2013-01-17
  • 打赏
  • 举报
回复
iamnobody 2013-01-17
  • 打赏
  • 举报
回复
这句话的意思是 参数的和返回值的传递是用构造函数来实现的. 原翻译真烂
taodm 2013-01-16
  • 打赏
  • 举报
回复
因为后半句才有真正的意义。你着眼点错了,自然就难理解这句话。 换本好点的书看吧。
lee_鹿游原 2013-01-16
  • 打赏
  • 举报
回复
传值得时候 : 值的类型,值,指针,引用.. 个人见解(随意反驳): 传值的时候,栈push sizeof(A) ,正好和拷贝构造联系,调用拷贝构造生成对象 传引用的时候,栈push 4个字节 传指针的时候,栈push 4个字节, 按照你说的拷贝,全都拷贝。 主要是理解,函数的传递方式..说远了,拷贝构造.. 楼主接贴吧。。。
lee_鹿游原 2013-01-16
  • 打赏
  • 举报
回复
引用 4 楼 yydy1983 的回复:
我个人认为传值后函数是要拷贝一份副本的,引用没有的。 特殊的传值不合适,不能混到一起谈。 传值就是传值,传引用就是传引用。 所以书没看懂。傻了。
函数传参的时候,是怎么传的。 传引用,传指针传的是什么,难道不是值麽? 0x0000001 你说这是个值还是个指针?指针是什么?别被书迷惑
夜的眼2021 2013-01-16
  • 打赏
  • 举报
回复
我个人认为传值后函数是要拷贝一份副本的,引用没有的。 特殊的传值不合适,不能混到一起谈。 传值就是传值,传引用就是传引用。 所以书没看懂。傻了。
lee_鹿游原 2013-01-16
  • 打赏
  • 举报
回复
引用 2 楼 yydy1983 的回复:
搞C+也好几年了,总觉的自己是半吊子。打算从头再学习,今天看到这个,又傻了。 期待大牛们帮帮忙了
我特意翻书看了看,这话感觉有点别扭.. 我的理解就如上所说..
夜的眼2021 2013-01-16
  • 打赏
  • 举报
回复
搞C+也好几年了,总觉的自己是半吊子。打算从头再学习,今天看到这个,又傻了。 期待大牛们帮帮忙了
lee_鹿游原 2013-01-16
  • 打赏
  • 举报
回复
楼主你深究这个是要做编译器麽。 个人理解: 传引用,是传值的一种,比较特殊的一种,拷贝构造通过传引用的方式传递, 创建并返回已创建好的对象..

64,654

社区成员

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

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