gpt4 book ai didi

c++ - C++ 中结构引用的默认参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:54 28 4
gpt4 key购买 nike

我想给函数参数一个默认值,它是对结构的引用。我可以给什么作为默认值?

最佳答案

第一种解决方案:

如果它是对结构的引用,那么您必须将其设为const 引用,然后执行以下操作:

struct A
{
//etc
A(int, int);
};

void f(int a, const A & = A(10,20) ) //const is necessary
{
//etc
}

由于显而易见的原因,它不是那么好:它使参数 const(你可能不想要它),并且你的结构需要有构造函数(你可能没有)。

第二种方案:

所以如果你不想让它成为const,或者如果你不想在结构中有一个构造函数,那么你可以这样做:

struct Point
{
int x, y, z;
};

Point g_default_point = {10,20,30};
void g(int a, Point & p = g_default_point )
{
//etc
}

还是不好。定义全局变量不是一个好主意。


最佳解决方案:定义一个重载函数

void g(int a, Point & p)
{
//your code
}
void g(int a) //this function would behave as if you opt for default value!
{
Point default_value = {10,20,30};
g(a, default_value);
}

现在它不需要您将参数设置为 const,也不会强制您在结构中包含构造函数。

关于c++ - C++ 中结构引用的默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6289694/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com