Ok, about constructors having default parameter, I think this is what you mean. Generally, it may be useful to offer a default state for your object and to initialize your variables of your object to a certain state. You can also add other constructors (think of it the same way as method overloading. as long as the signature is different it is legal).
Now I haven't touched c++ in quite some time, been going over to the world of java lately but you might have to be careful about adding constructors without having a default constructor. I think it is required if you add additional constructors that you specify a default constructor (you can make it do nothing, or make it call another constructor, etc). Something like this should illustrate the concept:
Code:
#include <iostream>
using namespace std;
class A {
private:
int a;
int b;
public:
A() { a = 0; b = 1; cout << "default constructor\n"; }
A(int x,int z) { a = x; b = z; cout << "2nd constructor\n"; }
~A() { /* here's your destructor. maybe you have a private char * which you dynamically allocate and you want to free it
anytime the object is about to be destroyed */ }
};
int main() {
A a;
A b(2,3);
return 0;
}
I may be off on some things slightly, as I said i haven't touched c++ in a while but I think this is a step in the right direction. if you look around there's an excellent post by Valmont on destructors.