我在给定的函数中有一个变量let say int c。我想把它传递给另一个class.let说它是
function(int a, int b, int c);
我只想传递第三个参数而忽略前两个。
即。 :我只想传递int c,作为function (c)
,它只是将它传递给第三个参数。我不想像function(0,0,c);
那样传递它。有没有可能性。请指教。
答案 0 :(得分:2)
看起来你想做功能重载。像这样的东西 -
function(int a, int b, int c);
function(int c);
在第二个函数中,您可以使用a
和b
的适当值调用第一个函数
答案 1 :(得分:2)
您可以为您的函数设置默认值:
void function(int c, int a = 0, int b = 0);
或者你可以重载你的功能:
void function(int a, int b, int c) {
//implementation 1
}
void function(int c) {
function(0, 0, c);
}
你可以在两种情况下都这样使用它:
function(c);
注意:当我们使用默认值时,在函数定义中,默认值的参数必须是最后一个,例如:
void function(int a = 0, int b = 0, int c)
不是有效的格式。
答案 2 :(得分:0)
当你遇到function(c)
相当于function(0, 0, c)
的情况时,听起来就像是一个糟糕的设计。通常,您可以对从头开始的参数使用默认参数值。如果function(c)
等同于function(c, 0, 0)
,则有意义。
您可以通过将函数声明为:
来轻松完成此操作void function(int c, int a = 0, int b = 0);
我意识到您可以通过将function
重载为:
void function(int c)
{
function(0, 0, c);
}
但它对我来说似乎仍然是一个糟糕的界面。
答案 3 :(得分:0)
Imho已经有三个参数值得构建它们
void function(foo f);
允许有更好的功能界面
struct foo {
int a;
int b;
int c;
foo() : a(0),b(0),c(0) {}
};
foo f;
f.b = 12;
f.c = 32;
function(f);
这有什么用?您可以提供默认构造函数,并让用户只设置那些非默认的字段:
foo
现在可以使用默认/非默认值的任意组合。
有人可能会认为结构不是真正必要的,问题只是转移到$res = mysqli_query($conn,"SELECT * FROM table_name");
while($row = mysqli_fetch_array($res)){
echo '<img src="data:image/jpeg;base64,'.base64_encode($row['al_image']).'" >';
}
的构造函数或正确设置成员的需要,但我认为这是另一种缺少的有效方法答案。 (顺便说一下,我并不是说我的例子在这里表现出最好的实践,但细节对确切的用例很重要)