#include using namespace std; class SimpleCat { public: SimpleCat(); // constructor SimpleCat(SimpleCat&); // copy constructor ~SimpleCat(); // destructor }; SimpleCat::SimpleCat() { cout << "Simple Cat Constructor..." << endl; } SimpleCat::SimpleCat(SimpleCat&) { cout << "Simple Cat Copy Constructor..." << endl; } SimpleCat::~SimpleCat() { cout << "Simple Cat Destructor..." << endl; } SimpleCat FunctionOne(SimpleCat theCat); SimpleCat* FunctionTwo(SimpleCat *theCat); int main() { cout << "Making a cat..." << endl; SimpleCat Frisky; cout << "Calling FunctionOne..." << endl; FunctionOne(Frisky); cout << "Calling FunctionTwo..." << endl; FunctionTwo(&Frisky); return 0; } // FunctionOne, passes by value SimpleCat FunctionOne(SimpleCat theCat) { cout << "Function One. Returning... " << endl; return theCat; } // functionTwo, passes by reference SimpleCat* FunctionTwo(SimpleCat *theCat) { cout << "Function Two. Returning... " << endl; return theCat; }