A constructor can take parameters to initialise the state. However, it is possible for the initial state to be determined by different sets of parameters.
For example: you might wish to set up an account, by specifying:
The account number, name, balance.
The account number, name, (no balance, defaults to 0.0).
The account number, name, initial balance, and a referee.
etc.
So it is useful that this constructor can be overloaded. So for the 
Account
class:
1
2 // Basic Bank Account Example demonstrating multiple constructors
3
4 #include<iostream>
5 #include<string>
6
7 using namespace std;
8
9 class Account{
10
11 protected:
12
13 int accountNumber;
14 float balance;
15 string owner;
16
17 public:
18
19 Account(string owner, float aBalance, int anAccountNumber);
20 Account(float aBalance, int anAccountNumber);
21 Account(int anAccountNumber);
22
23 virtual void display();
24 virtual void makeLodgement(float);
25 virtual void makeWithdrawal(float);
26 };
27
28 Account::Account(string anOwner, float aBalance, int anAccNumber):
29 accountNumber(anAccNumber), balance(aBalance),
30 owner (anOwner) {}
31
32 Account::Account(float aBalance, int anAccNumber) :
33 accountNumber(anAccNumber), balance(aBalance),
34 owner ("Not Defined") {}
35
36 Account::Account(int anAccNumber):
37 accountNumber(anAccNumber), balance(0.0f),
38 owner ("Not Defined") {}
39
40
41 void Account::display(){;
42 cout << "account number: " <<accountNumber
43 << " has balance: " << balance << " Euro" << endl;
44 cout << "This account is owned by: " << owner << endl;
45 }
46
47 void Account::makeLodgement(float amount){
48 balance = balance + amount;
49 }
50
51 void Account::makeWithdrawal(float amount){
52 balance = balance - amount;
53 }
54
55 int main()
56 {
57 Account a = Account(10.50, 123456);
58 a.display();
59
60 Account b = Account("Derek Molloy", 35.50, 123457);
61 b.display();
62 }
63
The full source code for this example is in
AccountMultipleConstructor.cpp
You can see from Figure 3.9, “The 
Account class with Multiple Constructors example output.” that the output for the 
a
state when the 
display() method is called, displays the string
"Not Defined", as assigned in the second constructor.
A destructor cannot be over-loaded. There can only be one destructor, as destructors do not take any parameters.
In C++, neither constructors or destructors are inherited by derived classes. i.e. if you define a particular constructor in the base class that takes 3 parameters, then the derived class does not have this constructor unless it explicitly defines it.
© 2006
Dr. Derek Molloy
(DCU).