Create a base class CurrencyConverter with a virtual method to convert currency from one type to another. Implement derived classes for specific conversions (e.g., USD to EUR, GBP to JPY). Use polymorphism to convert an amount of money based on user input.

I am currently accepting programming work, IT projects, school and application development, programming projects, thesis and capstone projects, IT consulting work, computer tutorials, and web development work kindly contact me at the following email address for further details.  If you want to advertise on my website kindly contact me also in my email address also. Thank you.

My email address is the following,, and

My mobile number here in the Philippines is 09173084360.

Please subscribe to my channel


You can buy my C++ book online at  

Beginner’s Guide To C++ Programming
You can buy my book in introduction to computer networking at Want to support my channel? GCash Account Jake Pomperada 09173084360 Paypal Patreon Thank you very much for your support.

Program Listing

#include <iostream>
#include <iomanip>

class CurrencyConverter {
    virtual double convertCurrency(double amount) {
        return 0.0; // Base class default implementation

class USDtoEURConverter : public CurrencyConverter {
    double convertCurrency(double amount) override {
        return amount * 0.85; // Convert USD to EUR using a fixed exchange rate

class GBPtoJPYConverter : public CurrencyConverter {
    double convertCurrency(double amount) override {
        return amount * 160.0; // Convert GBP to JPY using a fixed exchange rate

int main() {
    CurrencyConverter* converter = nullptr;
    double amount;
    char choice;

   std::cout <<"\n\n\tCurrency Converter Using Polymorphism in C++\n\n";
    std::cout << "\tEnter the amount in the source currency: ";
    std::cin >> amount;
    std::cout << "\n\tChoose a conversion (E for USD to EUR, J for GBP to JPY): ";
    std::cin >> choice;

    if (choice == 'E' || choice == 'e') {
        converter = new USDtoEURConverter();
    } else if (choice == 'J' || choice == 'j') {
        converter = new GBPtoJPYConverter();
    } else {
        std::cout << "Invalid conversion choice." << std::endl;
        return 1;

    double convertedAmount = converter->convertCurrency(amount);
    std::cout << "\n\tThe Converted amount: " << std::fixed <<std::setprecision(2) << convertedAmount << std::endl;

    delete converter;
     std::cout << "\n\tEnd of Program. Thank you for using this program." << std::endl;
    return 0;