Recap - Simple Calculator
Part of the Object Oriented Programming section of Coddy's C++ journey — lesson 11 of 104.
Challenge
HardBuild a complete Calculator class that combines all the concepts you've learned:
- Header/Source files — Separate declaration and implementation
- Namespace — Place the class inside
CalcApp - Private attributes —
name(string),memory(int),operationCount(int) - Constructors — Parameterized (name) and default ("Standard")
- this pointer — Use
this->for all member access - Methods —
add,subtract,multiply,divide(each stores result in memory and increments operation count) - Getters —
getName(),getMemory(),getOperationCount()
divide should return 0 when dividing by zero.
Try it yourself
#include <iostream>
#include "Calculator.h"
int main() {
std::string name;
int a, b;
std::getline(std::cin, name);
std::cin >> a >> b;
CalcApp::Calculator calc(name);
std::cout << "Calculator: " << calc.getName() << std::endl;
std::cout << "Memory: " << calc.getMemory() << std::endl;
std::cout << "Add: " << calc.add(a, b) << std::endl;
std::cout << "Subtract: " << calc.subtract(a, b) << std::endl;
std::cout << "Multiply: " << calc.multiply(a, b) << std::endl;
std::cout << "Divide: " << calc.divide(a, b) << std::endl;
std::cout << "Divide by zero: " << calc.divide(a, 0) << std::endl;
std::cout << "Memory: " << calc.getMemory() << std::endl;
std::cout << "Operations: " << calc.getOperationCount() << std::endl;
return 0;
}All lessons in Object Oriented Programming
1Fundamentals of OOP
External FilesC++ Build & CompilationHeader Files & Source FilesNamespaces & ScopeIntroduction to OOP in C++Classes vs ObjectsThe 'this' PointerMethods (Member Functions)Attributes (Data Members)Ctors & Dtors BasicsRecap - Simple Calculator4Class Properties
Instance vs Static MembersGetters and SettersConst Member FunctionsMutable KeywordStatic Methods and VariablesFriend Functions & ClassesRecap - Bank Account Manager7Inheritance
Basic InheritanceInheritance Access LevelsCtor & Dtor Call OrderMethod OverridingVirtual Functions & VTableMultiple InheritanceVirtual InheritanceRecap - Employee Hierarchy2Memory Management
Stack vs Heap MemoryPointers and ReferencesDynamic Memory (new/delete)Smart Pointers in C++RAII in C++Recap - Dynamic Array Manager5Encapsulation
Access Specifiers in C++Access Specifiers In DepthInformation HidingStruct vs ClassNested & Inner ClassesRecap - Student Records System8Polymorphism
Compile vs Runtime PolymorphFunction OverloadingVirtual Functions RevisitedPure Virtual FunctionsAbstract ClassesInterface Design in C++Dynamic Casting & RTTIRecap - Shape Calculator3Constructors & Destructors
Default ConstructorParameterized ConstructorCopy ConstructorMove ConstructorConstructor Init ListsDelegating ConstructorsDestructor Deep DiveRule of Three / Five / ZeroRecap - String Class6Operator Overloading
Intro to Operator OverloadArithmetic Operator OverloadComparison Operator OverloadStream OperatorsAssignment Operator Overload[] and () Operator OverloadType Conversion OperatorsRecap - Matrix Class9Templates
Function TemplatesClass TemplatesTemplate SpecializationVariadic TemplatesSFINAE & Type Traits BasicsRecap - Generic Container