Naw*_*waz 17
第一解决方案
如果它是对结构的引用,那么你必须使它成为const引用,并执行以下操作:
struct A
{
//etc
A(int, int);
};
void f(int a, const A & = A(10,20) ) //const is necessary
{
//etc
}
Run Code Online (Sandbox Code Playgroud)
由于显而易见的原因,它并没有那么好:它产生参数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
}
Run Code Online (Sandbox Code Playgroud)
仍然不好.定义全局变量不是一个好主意.
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);
}
Run Code Online (Sandbox Code Playgroud)
现在它不需要你创建参数const,它也不会强迫你在你的struct中有构造函数.
你不能那样做。
所有引用都必须在声明时初始化。引用只是变量的另一个名称。因此,您不能为引用其他变量的参数分配默认值。
如果必须这样做,可以使用指针代替。在这种情况下,您可以0为参数指定默认值。
| 归档时间: |
|
| 查看次数: |
8795 次 |
| 最近记录: |