我想做这样的事情
class foo{
private:
double a,b;
public:
foo(double a=1, double b=2){
this.a=a;
this.b=b;
}
}
int main(){
foo first(a=1);
foo first(b=2);
}
这样的事情是可能的还是我需要创建两个新的构造函数?
第二个问题来了:这两个构造函数有什么区别:
class foo{
private:
int a;
public:
foo(int in):a(in){}
}
或
class foo{
private:
int a;
public:
foo(int in){a=in}
}
最佳答案
foo first(a=1);
foo first(b=2);
你不能在 C++ 中真正拥有它。它曾经被考虑标准化,但后来被放弃了。 Boost.Parameter 尽其所能来近似命名参数,请参阅 http://www.boost.org/doc/libs/1_47_0/libs/parameter/doc/html/index.html
foo(int in):a(in){}
foo(int in){a=in}
第一个构造函数正在初始化 a,而第二个构造函数正在为其赋值。对于这种特殊情况 (int) 没有太大区别。
关于c++ - 具有默认值的构造函数和不同的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7410237/