Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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++ - Fatal编程技术网

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);