Leandro Melo
11/14/2008 1:05:00 PM
On 13 nov, 15:02, Leandro Melo <ltcm...@gmail.com> wrote:
> On 13 nov, 14:46, ctj951 <chadsspameaterem...@yahoo.com> wrote:
>
>
>
> > I have a very specific question about a language issue that I was
> > hoping to get an answer to. If you allocate a structure that contains
> > an array as a local variable inside a function and return that
> > structure, is this valid?
>
> > As shown in the code below I am allocating the structure in the
> > function and then returning the structure. I know if the structure
> > contained only simple types (int, float) this will work without
> > problems as you are getting a copy of those items returned from the
> > function. But I'm wondering with an array which is being returned
> > from the function as part of the structure is a pointer to the local
> > variable or perhaps a copy of that array (as it would be for simple
> > types). I think we might be getting a pointer returned but I'm not
> > sure.
>
> > #include <iostream>
> > using namespace std;
>
> > struct Item
> > {
> > int itemNumber;
> > int internalItems[5];
> > };
>
> > Item CreateItem()
> > {
> > Item newItem;
>
> > newItem.itemNumber = 10;
>
> > newItem.internalItems[ 0 ] = 1;
> > newItem.internalItems[ 1 ] = 2;
> > newItem.internalItems[ 2 ] = 3;
> > newItem.internalItems[ 3 ] = 7;
> > newItem.internalItems[ 4 ] = 9;
>
> > return( newItem );
> > }
>
> > void PrintItem( Item iItemToPrint )
> > {
> > cout << iItemToPrint.internalItems[0];
> > }
>
> > int main ()
> > {
> > Item testItem = CreateItem();
>
> > PrintItem( testItem );
>
> > return 0;
> > }
>
> > This is a specific question about a specific language issue. Thank
> > You.
>
> This is one of the reasons copy constructors exist. ;) Think about
> which semantics you would like for a particular class (deep copy,
> shallow copy) and write a copy constructor accordingly.
Hmm... your array is statically allocated. No worry then.
--
Leandro T. C. Melo