Inheritance
Let's extend the class Point
from the previous tutorial to handle Complex numbers. The real
and imaginary
numbers will be defined as private
integer references
to coordinates of the Point object
.
#include <iostream>
using namespace std;
class Point;
std::ostream& operator<<(std::ostream& out, const Point& c);
template<typename T>
void Swap(T &a, T &b) { T temp = a; a = b; b = temp; }
class Point {
public:
int x, y;
Point (int c1, int c2) { x = c1; y = c2;}
Point& operator=(Point rhs) {
x = rhs.x; y = rhs.y;
return *this;
}
};
class Complex : public Point {
private:
int &real, &imag;
public:
Complex(int r, int i) : Point (r, i), real (x), imag (y)
{ cout << "Forming..." << *this; }
};
int main()
{
Complex c1(15, 15), c2 (100, 100);
return 0;
}
std::ostream& operator<<(std::ostream& out, const Point& c)
{
out<< "x:" << c.x << " ";
out<< "y:" << c.y << "\n";
return out;
}
Exercise
Form two Complex
objects. Use the Swap
function to swap the Complex
objects as Point types.
Reset the code area, and take the opportunity to write everything from scratch.
Print the swapped objects as Point
objects. Subsequently, also print the swapped objects as Complex
objects.