/*
* @topic T0M151 C++ crash course sample 05
* @brief Demonstrates C++ pointers, references, address-of, and arrays of objects
*/
#include <iostream>
#include "utility.h"
#include "window.h"
Frame* create_window()
{
return new Frame( 10, 20 );
}
// makes copy of the object (bad!!)
/*
void resize_window( Frame frame )
{
frame.resize();
}
*/
// access the object indirecty by reference
void resize_window( Frame& frame )
{
frame.resize();
}
// access the object indirecty by pointer
void resize_window( Frame* frame/*, int count*/ )
{
(*frame).resize(); // using pointer deref operator
frame->resize(); // using pointer-to-memb deref operator
//++frame;
}
int main()
{
Frame main_window;
resize_window( &main_window );
Frame* ptr_win = &main_window;
resize_window( main_window );
resize_window( ptr_win );
resize_window( *ptr_win );
Frame frames[100]; // array of objects
frames[55].display();
resize_window( frames[55] );
resize_window( &frames[55] );
Frame* ptr_frames[100]; // array of pointers to objects
for ( int idx = 0; idx < 100; ++idx ) {
ptr_frames[idx] = new Frame( idx, idx );
}
int dummy = 0;
//Window window( 10, 20 );
Window* window = create_window();
// because window is a pointer to object
// we use -> pointer-to-member dereference operator
window->display();
pause();
return 0;
}