以下是我的计划。在main函数中,我在调用a
函数时初始化了b
和add2var
。调用函数时,C ++是否允许在括号中初始化?
#include "stdafx.h"
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int add2var(const int a, const int b);
int main()
{
int c = add2var(int a = 5, int b = 6.1);
cout << c << endl;
return 0;
}
int add2var(const int a, const int b)
{
return a + b;
}
它产生如下错误。
语法错误:'int'前面应加')'
函数不带0个参数
语法错误:')'
答案 0 :(得分:2)
有两种方法。第一个是以下
int a;
int b;
int c = add2var( a = 5, b = 6);
第二个是函数具有默认参数的以下内容
int add2var(const int a = 5, const int b = 6 );
int main()
{
int c = add2var();
//,,,
答案 1 :(得分:2)
我们只能在函数定义和声明期间为函数参数指定数据类型。当我们进行函数调用时,我们只是传递那些函数参数/参数的实际值。因此,函数调用语法int c = add2var(int a = 5, int b = 6.1);
是完全错误的。我没有在函数调用中看到任何语言的参数类型。
您的代码中还有许多其他问题。
int c = add2var(5, 6);
而不是int c = add2var(int a = 5, int b = 6.1);
,我们无法在此处指定数据类型。 6.1
传递浮点int
并不好。在函数调用期间它将被舍入。如果您想通知您的API用户您的函数参数未被修改,请使用以下代码中的const作为函数参数。但是,当您将参数作为值传递时,它不会保护任何内容。没有人可以改变“5”和“6”的含义吗?
int add2var(const int a, const int b)
{
return a + b;
}
如果您打算使用默认参数,请参阅下面的代码。
int add2var(int a = 5, int b = 6)
{
a + b;
}
int main()
{
add2var(); // result = 11, a will use default parameter 5 and b will use 6
add2var(1); // result = 7, b will use default parameter of 6
add2var(2, 3); // result = 5, override default value for a and b
}