C++ c+中的默认参数+; void volume(int l=10,int w=10,int h=10); int main() { clrsc(); volume();//相当于卷(10,10,10) 卷(5);//相当于卷(5,10,10) 卷(8,6);//相当于卷(8,6,10) 卷(6,7,8); getch(); 返回0; } 空隙体积(整数l、整数w、整数h) { cout
此处使用的语法:C++ c+中的默认参数+; void volume(int l=10,int w=10,int h=10); int main() { clrsc(); volume();//相当于卷(10,10,10) 卷(5);//相当于卷(5,10,10) 卷(8,6);//相当于卷(8,6,10) 卷(6,7,8); getch(); 返回0; } 空隙体积(整数l、整数w、整数h) { cout,c++,C++,此处使用的语法: void volume(int l=10, int w=10, int h=10); int main() { clrscr(); volume(); //equivalent to volume(10,10,10) volume(5); //equivalent to volume(5,10,10) volume(8,6); //equivalent to volume(8,6,10) volume(6,7,8);
void volume(int l=10, int w=10, int h=10);
int main()
{
clrscr();
volume(); //equivalent to volume(10,10,10)
volume(5); //equivalent to volume(5,10,10)
volume(8,6); //equivalent to volume(8,6,10)
volume(6,7,8);
getch();
return 0;
}
void volume(int l, int w, int h)
{
cout<<"volume = "<<l*w*h<<endl;
}
对于简化以后的调用来说,这是一个很好的编译器
编译器不会生成参数较少的函数,也不会将参数插入函数本身,它只是在调用函数时使用这些参数
这也是为什么它们只需要指定一次,当您有头文件和代码文件时,最好将它们放在头文件中(调用可以在头文件中看到它们,编译器可以相应地做出反应)
因此,当你
void volume(int l=10, int w=10, int h=10);
打电话
void volume(int l=10, int w=10, int h=10);
编译器查看默认值,处理它们,并调用
volume(5, 3);
volume()
声明中的这些赋值称为默认参数,如果在调用函数时忽略了参数值,则会使用这些赋值。因为语言就是这样设计的
或者你在问编译器是如何工作的?该标准并没有规定它应该如何工作,只是规定了它应该如何工作 但潜在的一种解决方案是在幕后生成四种方法:
volume(5, 3, 10); // 10 from the default
它被称为缺省赋值。你告诉编译器如果没有提供值,使用10。< /P> < P>这是默认参数的定义。< /P>什么?请更清楚地重新表述问题。对不起,你的问题不清楚。你刚才描述了C++中默认参数是如何工作的。现在你问“为什么”。嗯,唯一的答案是默认参数是如何在C++中工作的。这就是语言的定义。这是你为什么要回答的唯一答案。问题。你上面的例子可能不是最佳实践。是的,我问的是当我们将值传递给参数时,我们如何更改它。它不是多次初始化变量吗。我不确定你的意思。如果你传递值,你不能仅仅更改这些值;这需要传递一个引用或指针。因为r处理默认值,而不是传入可以稍后更改的变量。
void volume()
{
volume(10, 10, 10);
}
void volume(int l)
{
volume(l, 10, 10);
}
void volume(int l, int w)
{
volume(l, w, 10);
}
void volume(int l, int w, int h)
{
cout<<"volume = "<<l*w*h<<endl;
}
// source
volume(5);
// Compiler actually transforms the source (internally) and compiles:
volume(5, 10, 10);