In short, you cannot ignore order.
However, you can create more than one constructor.
struct foo
{
char *_p;
int _q;
foo( char *p, int q): _p(p), _q(q) {}
foo( char *p): _p(p), _q(0) {}
foo( int q): _p(nullptr), _q(q) {}
};
Edit:
, /. , /. NULL , :
class foo {
public:
foo(int x, unsigned char y=0) : x_(x), y_(y) {}
foo(unsigned char x, int y=0) : x_(y), y_(x) {}
int x_;
char y_;
};
/.