home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
virtl.cpp
< prev
next >
Wrap
Text File
|
1994-04-09
|
3KB
|
94 lines
/*----------------------------------------------------------------------------*/
/* vdemo.cpp */
/* */
/* Virtual base class / multiple deriviation example */
/* Demonstrates constructor firing pattern and order, and */
/* the use of the virtual keyword in derivations. */
/* */
/* Change the definition of __VIRTUAL__ to "virtual" to make the derivations */
/* virtual; leave it as-is to see what happens in multiple derivations from */
/* the same base class. */
/* */
/* (c) Larry Morley, 1994 */
/*----------------------------------------------------------------------------*/
#define __VIRTUAL__ virtual
//#define __VIRTUAL__
#include <stdio.h>
int main(void);
/*----------------------------------------------------------------------------*/
class Account
{
private:
int balance;
public:
Account()
{
printf("Constructor for Account.\n");
}
int &Balance()
{
return balance;
}
};
/*----------------------------------------------------------------------------*/
class CheckingAccount : public __VIRTUAL__ Account
{
public:
CheckingAccount()
{
printf("Constructor for Checking Account.\n");
Balance() = 10;
}
};
/*----------------------------------------------------------------------------*/
class SavingsAccount : public __VIRTUAL__ Account
{
public:
SavingsAccount()
{
printf("Constructor for Savings Account.\n");
Balance() = 20;
}
};
/*----------------------------------------------------------------------------*/
class CheckingAndSavingsAccount : public CheckingAccount, public SavingsAccount
{
public:
CheckingAndSavingsAccount()
{
printf("Constructor for CheckingAndSavings Account.\n");
}
};
/*----------------------------------------------------------------------------*/
int main()
{
CheckingAndSavingsAccount account;
printf("Balance 1: %d.\n",account.SavingsAccount::Balance());
printf("Balance 2: %d.\n",account.CheckingAccount::Balance());
return 0;
}
/*----------------------------------------------------------------------------*/