函数省略结构体
Function omit struct
它是可能的函数没有一些结构信息?像这样int f(int x,int y=1)
和f(2)这很好,但是对于这个int f(int x,struct my_struct &y)
考虑到这是一个参考,正确的方法是什么?
因为它是一个非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")) {
// ...
}
相关文章:
- 如何在构造函数中初始化结构体的动态数组?
- C++ 使用成员函数返回结构体指针属性的值
- 在使用结构体和用函数填充其变量(使用指针)时遇到问题
- 通过函数参数确定结构体成员
- 如何使用其他函数返回的值为结构体成员赋值
- 在不使用 std::copy 函数的情况下编写这个复杂的复制结构体
- 如何调用一个函数,它在一个单独的类中打印出一个结构体数组
- 如何使用结构体作为接口从函数返回指向数组的指针
- 为什么这个c++函数是结构体
- 将结构体传递给函数以编辑数组导致的c++ seg错误
- 调用返回结构体的c++ DLL函数
- 如何创建一个公共python函数,它可以接收c++结构体/实例或python对象作为参数
- 被视为依赖作用域的函数模板的函数作用域结构体的静态成员函数
- c++结构体是否有默认构造函数?
- 将结构体传递给c++函数(效率)
- 具有许多参数的函数——将它们作为结构体
- 无法将结构体数组传递给函数
- 从通过函数发送的结构体中复制数组
- 从c#调用c++函数-结构体,指针,函数指针
- 指向结构体作为函数参数的指针-为什么不更新其值