#include <iostream>
class MyClass
{
public:
MyClass();
MyClass(MyClass&);
~MyClass();
int GetAge() const { return itsAge; }
void SetAge(int age) { itsAge = age; }
private:
int itsAge;
};
MyClass::MyClass()
{
std::cout << "Simple Cat Constructor...\n";
itsAge = 1;
}
MyClass::MyClass(MyClass&)
{
std::cout << "Simple Cat Copy Constructor...\n";
}
MyClass::~MyClass()
{
std::cout << "Simple Cat Destructor...\n";
}
const MyClass & f (const MyClass & obj);
int main()
{
MyClass myObject;
std::cout << "myObject is " << myObject.GetAge() << " years old\n";
int age = 5;
myObject.SetAge(age);
std::cout << "myObject is " << myObject.GetAge() << " years old\n";
std::cout << "Calling f...\n";
f(myObject);
std::cout << "myObject is " << myObject.GetAge() << " years old\n";
return 0;
}
const MyClass & f (const MyClass & obj)
{
std::cout << "Function Two. Returning...\n";
std::cout << "myObject is now " << obj.GetAge()<< " years old \n";
return obj;
}
Simple Cat Constructor...
myObject is 1 years old
myObject is 5 years old
Calling f...
Function Two. Returning...
myObject is now 5 years old
myObject is 5 years old
Simple Cat Destructor...