问个问题,匿名对象做函数参数!

倚栏|听风 2018-01-31 03:47:47
当匿名对象作为函数参数时,它到底是传递的一个值还是一个指针,我发现无论是需要指针的函数参数还是需要值传递的函数参数,都可以构建一个临时变量作为参数?? 所以,它到底是个什么东东
...全文
501 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2018-02-01
  • 打赏
  • 举报
回复
引用 8 楼 qq_33462307 的回复:
引用 5 楼 paschen 的回复:
引用 3 楼 qq_33462307 的回复:
引用 2 楼 jianwen0529 的回复:
当然是值,参数都会创建副本。就算传递指针,那也有一个指针的副本。具体对参数的操作,依据你参数的类型。
既然是值,为什么可以做指针参数??
什么叫做指针参数,如果你传递的是指针,指针本身是按值传递的
好像跟匿名对象没啥关系。。。MoveWindow即可以接收一个CRect对象的指针,也可以直接接收一个CRect对象, 怎么转换的,能详细解释一下吗?
那是因为CRECT中实现了类型转换,operator LPCRECT( ) const; 可隐式转换为LPCRECT,也就是指针的形式
倚栏|听风 2018-02-01
  • 打赏
  • 举报
回复
引用 5 楼 paschen 的回复:
引用 3 楼 qq_33462307 的回复:
[quote=引用 2 楼 jianwen0529 的回复:]当然是值,参数都会创建副本。就算传递指针,那也有一个指针的副本。具体对参数的操作,依据你参数的类型。
既然是值,为什么可以做指针参数??
什么叫做指针参数,如果你传递的是指针,指针本身是按值传递的[/quote] 好像跟匿名对象没啥关系。。。MoveWindow即可以接收一个CRect对象的指针,也可以直接接收一个CRect对象, 怎么转换的,能详细解释一下吗?
烟袅许伊 2018-02-01
  • 打赏
  • 举报
回复
补充一下,大部分编译器,一种匿名函数是通过内联实现的,另一种传递的是函数指针,参数的传递跟普通函数没区别。
幻夢之葉 2018-01-31
  • 打赏
  • 举报
回复
引用 3 楼 qq_33462307 的回复:
[quote=引用 2 楼 jianwen0529 的回复:] 当然是值,参数都会创建副本。就算传递指针,那也有一个指针的副本。具体对参数的操作,依据你参数的类型。
既然是值,为什么可以做指针参数?? [/quote] 你首先要清楚: 参数传递的方式有两种:值传递和引用传递。 但是实参在函数中都是一个副本,指针(或引用)的副本也是一个指针(原理相同),指针值相同,所以根据相同的地址值修改同一个地址的内存 所以最终是值传递还是引用传递,是依据你形参的类型来决定的,而不是匿名对象与否。
paschen 版主 2018-01-31
  • 打赏
  • 举报
回复
引用 3 楼 qq_33462307 的回复:
引用 2 楼 jianwen0529 的回复:
当然是值,参数都会创建副本。就算传递指针,那也有一个指针的副本。具体对参数的操作,依据你参数的类型。
既然是值,为什么可以做指针参数??
什么叫做指针参数,如果你传递的是指针,指针本身是按值传递的
倚栏|听风 2018-01-31
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
变量本身都是通过值传递,如果你函数中需要访问的只是这个指针指向的值时,相对这个值,你是按地址传递的
...意思就是即可以当成传值 、 也可以当成传指针??
倚栏|听风 2018-01-31
  • 打赏
  • 举报
回复
引用 2 楼 jianwen0529 的回复:
当然是值,参数都会创建副本。就算传递指针,那也有一个指针的副本。具体对参数的操作,依据你参数的类型。
既然是值,为什么可以做指针参数??
幻夢之葉 2018-01-31
  • 打赏
  • 举报
回复
当然是值,参数都会创建副本。就算传递指针,那也有一个指针的副本。具体对参数的操作,依据你参数的类型。
paschen 版主 2018-01-31
  • 打赏
  • 举报
回复
变量本身都是通过值传递,如果你函数中需要访问的只是这个指针指向的值时,相对这个值,你是按地址传递的

65,187

社区成员

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

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