void func ( string word = "hello", int b ) { // some jobs}
void func ( string word = "hello", int b ) {
// some jobs
}
字符串在另一功能中
//calling func ( "", 10 ) ;
//calling
func ( "", 10 ) ;
型当我编译时,它会发出这个错误:参数缺少默认参数我想使用像func ( 10 )或func ( "hi" )这样的函数。如何在不更改任何内容(例如设置int b = 0)的情况下修复它?
func ( 10 )
func ( "hi" )
int b = 0
omjgkv6w1#
在默认参数开始之后不能有非默认参数。换句话说,如何为b指定一个值,使word保留默认值“hello”?
b
word
vptzau2j2#
具有默认值的参数必须位于参数列表的末尾。所以只要将函数声明改为
void func(int b, string word = "hello")
字符串
o8x7eapl3#
具有默认值的参数必须位于列表的末尾,因为在调用函数时,您可以将参数保留在末尾,但不能在中间遗漏它们。因为你的参数有不同的类型,所以你可以使用重载来获得相同的效果:
void func ( string word, int b ) { // some jobs}void func ( int b ) { func("hello", b); }
void func ( string word, int b ) {
void func ( int b ) { func("hello", b); }
zxlwwiss4#
错误信息是正确的。如果默认参数被分配给一个给定的参数,那么所有后续的参数都应该有一个默认参数。你可以用两种方法修复它;(1)改变参数的顺序:
void func (int b, string word = "hello");
字符串(2)为b分配默认值:
void func (string word = "hello", int b = 0);
型
xa9qqrwz5#
你不能不改变任何东西就修复它!要修复它,可以使用重载:
void func ( string word, int b ) { // some jobs}void func ( string word ) { func( word, 999 );}void func ( int b ) { func( "hello", b );}
void func ( string word ) {
func( word, 999 );
void func ( int b ) {
func( "hello", b );
5条答案
按热度按时间omjgkv6w1#
在默认参数开始之后不能有非默认参数。换句话说,如何为
b
指定一个值,使word
保留默认值“hello”?vptzau2j2#
具有默认值的参数必须位于参数列表的末尾。
所以只要将函数声明改为
字符串
o8x7eapl3#
具有默认值的参数必须位于列表的末尾,因为在调用函数时,您可以将参数保留在末尾,但不能在中间遗漏它们。
因为你的参数有不同的类型,所以你可以使用重载来获得相同的效果:
字符串
zxlwwiss4#
错误信息是正确的。如果默认参数被分配给一个给定的参数,那么所有后续的参数都应该有一个默认参数。你可以用两种方法修复它;
(1)改变参数的顺序:
字符串
(2)为
b
分配默认值:型
xa9qqrwz5#
你不能不改变任何东西就修复它!
要修复它,可以使用重载:
字符串