函数可能没有一些结构信息?像这样的 int f(int x,int y=1)
和调用f(2)它只是很好,但对于这int f(int x,struct my_struct &y)
考虑到它是一个参考有什么正确的方法?功能省略结构
Q
功能省略结构
1
A
回答
2
由于它是非const
引用,因此不能将其绑定到作为临时对象的默认值。您可以它绑定到一些非临时对象,像这样:
my_struct obj;
int f(int x, my_struct& y = obj) {
// ...
}
但是,这将意味着,如果没有第二个参数的f
每次调用将有机会获得同样的obj
。他们都可以修改它,然后下一个会收到一个obj
与不同的状态。这不是默认值的典型特征。你期望它每次都有相同的默认值。
如果可能不传递一个对象,为什么你的函数将采用非const
引用的对象?当您希望调用者传递一个对象供您修改时,您可以采用非const
引用。
改为y
参数代替const
参数可能更有意义。当你希望调用者传递一个对象给你观察并且你不想复制它时,你采用const
引用。然后你能将其绑定到一个临时的对象,像这样:
int f(int x, const my_struct& y = my_struct(1, 2, "some args")) {
// ...
}
相关问题
- 1. 结构和功能
- 2. 结构与功能参数
- 3. 结构中的功能
- 4. 结构指针功能?
- 5. LR(1)BNF语法功能参数与后省略号
- 6. 制作功能有帮助省略号的参数()函数
- 7. 省略数据类型构造
- 8. fetchArray()省略第一个结果
- 9. 忽略功能?
- 10. Golang:在嵌套结构存储SQL结果集和省略,如果空
- 11. 省略号
- 12. 省略图案?
- 13. Eclipse - 省略extenisons
- 14. SQL INSERT性能省略字段名称?
- 15. text-overflow:省略号不能用inline-flex
- 16. Path.Combine可能的原因省略参数
- 17. webpack 2不能省略'-loader'错误
- 18. 功能指针结构使用一次结构调用
- 19. 与结构列表传递结构的功能
- 20. 硒功能测试结构和实务
- 21. 如何退出这个功能结构?
- 22. 结构阵列功能参数
- 23. 的Javascript:要使用的功能结构
- 24. 传递结构直接功能
- 25. MVC体系结构EJB功能
- 26. C#编组为C结构和功能
- 27. 应用的功能,子结构自动
- 28. C结构成员的功能
- 29. 功能没有保存到结构
- 30. 使用结构设置功能
欢迎堆栈溢出!我不明白你想问什么。你问结构参数是否可以有默认值?或者你问是否参考参数可以有默认值?或者是其他东西? – 2013-02-27 20:43:07
是的。请注意,所提到的问题没有被接受的答案,但是最高的投票答案是你之后的答案。 – 2013-02-27 20:47:49
谢谢,实际上他们都是。 – siloan 2013-02-27 20:50:05