template <typename T>
void func(T a, T b = T()) {
std::cout << a << b;
}
int main()
{
func(1,4); // a = 1, b = 4
func(1); // a = 1, b = 0
std::string x = "Hello";
std::string y = "World";
func(x,y); // a = "Hello", b ="World"
func(x); // a = "Hello", b = ""
}
注意:以下是格式错误的
template <typename T>
void func(T a = T(), T b )
template <typename T>
void func(T a, T b = a )
int func( int x = 0, int y = 0 );
func(); // doesn't pass optional parameters, defaults are used, x = 0 and y = 0
func(1, 2); // provides optional parameters, x = 1 and y = 2
int func(int a, int b = -1) {
std::cout << "a = " << a;
if (b != -1)
std::cout << ", b = " << b;
std::cout << "\n";
}
int main() {
func(1, 2); // prints "a=1, b=2\n"
func(3); // prints "a=3\n"
return 0;
}
9条答案
按热度按时间bcs8qyzn1#
下面是将mode作为可选参数传递的示例
可以用两种方式调用myfunc,并且都有效
irlmq6kh2#
关于默认参数用法的一个重要规则是:
默认参数应在最右端指定,一旦指定了默认值参数,就不能再指定非默认参数。例如:
bakd9h0s3#
如果有多个默认参数,你们中的一些人可能会感兴趣:
给定以下函数调用:
将生成以下输出:
参考:http://www.learncpp.com/cpp-tutorial/77-default-parameters/
vaqhlq814#
为了遵循这里给出的示例,但为了澄清使用头文件时的语法,函数forward声明包含可选参数默认值。
myfile.h
myfile.cpp
ftf50wuq5#
随着C++17中std::optional的引入,你可以传递可选参数:
输出:
参见https://en.cppreference.com/w/cpp/utility/optional
vtwuwzda6#
使用默认参数
注意:以下是格式错误的
hpxqektj7#
用逗号分隔它们,就像没有默认值的参数一样。
gudnpqoy8#
通常通过设置参数的默认值:
yxyvkwin9#
Jus添加到@Pramendra的可接受的ans中,如果您有函数的声明和定义,则只需在声明中指定默认参数