【发布时间】:2012-04-12 03:49:32
【问题描述】:
我是 C++ 编程的新手,所以现在请不要太苛刻 :) 。以下示例说明了我的问题的最小描述。假设我在头文件中有这个函数声明:
int f(int x=0, MyClass a); // gives compiler error
编译器会抱怨,因为带有默认值的参数后面的参数也应该有默认值。
但是我可以给第二个参数什么默认值呢?
这个想法是,如果其余的参数与特定情况无关,则可以使用少于两个参数调用该函数,因此应执行以下所有操作:
MyClass myObj; // create myObj as an instance of the class MyClass
int result=f(3,myObj); // explicit values for both args
int result=f(3); // explicit for first, default for second arg
int result=f(); // defaults for both
【问题讨论】:
-
可以把
int f(int x=0, MyClass a);改成int f(MyClass a, int x=0);吗? -
人们不会对 SO 苛刻 :-),但 C++ 会。 ;-)。出于好奇:您为什么选择学习 C++?
标签: c++ function object default