i want to achieve a class like this:
class A{
int a;
int b;
int c;
A():a(),b(),c(){};
A(int ia,int ib,int ic=ia+ib):a(ia),b(ib),c(ic){}; //this is what i need
};
I want the ic's default value is caculated based on the ia and ib, the code here will get error when being compiled.
I wonder if there's a way to get something like this.
thanks.
The default constructor with argument has a default parameter x, which has been assigned a value of 0. Key Points: Default arguments are different from constant arguments as constant arguments can't be changed whereas default arguments can be overwritten if required.
Python allows function arguments to have default values. If the function is called without the argument, the argument gets its default value.
A default argument is a value in the function declaration automatically assigned by the compiler if the calling function does not pass any value to that argument.
Just add another constructor overload:
A(int ia, int ib)
: a(ia), b(ib), c(ia + ib) {}
A(int ia, int ib, int ic)
: a(ia), b(ib), c(ic) {}
For more complex initialisation, you can avoid repetition using a C++11 delegating constructor:
A(int ia, int ib)
: A(ia, ib, ia + ib) {}
A(int ia, int ib, int ic)
: a(ia), b(ib), c(ic) {}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With