oop tutorials
Jesse Phillips
jessekphillips at gmail.com
Thu Mar 6 19:41:08 PST 2008
I am wrong and have been wrong. I saw no need to thank Jarrett, I do
appreciate it, but I was not the one requesting help. Saaa gave a thank
you which says the information was received.
On Thu, 06 Mar 2008 19:25:43 -0500, Ty Tower wrote:
> Jarrett Billingsley Wrote:
>
>> "Jesse Phillips" <jessekphillips at gmail.com> wrote in message
>> news:fqkejg$1vkn$1 at digitalmars.com...
>> > Just so you can ask that question, no not really but I'll tell you
>> > the difference.
>> >
>> > auto store = new Bike[10];
>> >
>> > Allocates memory on the heap, which means the function can return it.
>> >
>> > Bike[10] store;
>> >
>> > will allocate memory on the stack thus will not exist when the
>> > function returns. I had no reason not to use this, I just ended up
>> > not.
>> >
>> > And both arrays are static, thus there length will not change.
>>
>> Nope. new Bike[10] allocates a new dynamically-sized array of length
>> 10; the type of that expression is Bike[], not Bike[10]. It's really
>> sugar for new Bike[](10). Thus its length can change.
>>
>> It's not actually possible to allocate a statically-sized array on the
>> heap directly. You have to use a templated struct and allocate that.
>>
>>
> I notice good old Jesse doesn't answer when someone corrects him. No
> thanks either There is a definate problem
>
> So Tango version
>
> module Bike;
> import tango.io.Stdout;
> class Bike {
> Human owner;
>
> this(Human o) {
> owner = o;
> }
> public void newOwner(Human o) {
> owner = o;
> }
> }
>
> class Human {
> Bike bike;
> char[] name;
>
> public:
> this(char[] n) { name = n; }
>
> void ride() {
> if(bike !is null) {
> Stdout(name,"is now riding his new bike").newline;
> }
> else {
> Stdout("This guy has to walk at first").newline;}
> }
>
> void purchase(Bike b) {
> b.newOwner(this);
> bike=b;
> }
> }
>
> void main() {
> auto store = new Bike[10];
> store[] = new Bike(null);
>
> Human joe = new Human("Joe");
> joe.ride();
>
> // Joe buys a new bike
> joe.purchase(store[4]);
> joe.ride();
>
> }
>
> /* you will notice that the bike requires an owner, but I provided none
> during creation. Also note that a Human does not have to own a bike,
> would you want to force a creation of bike even though he has not
> purchased one? I didn't test the code, but I hope it works.
>
> One of the things that happens as that you want a reference to an
> object type, but not create a new one, because later you will be
> getting the reference from somewhere else. Feel free to use what I have
> given you.
> */
> Interesting -thanks to all three of you
More information about the Digitalmars-d-learn
mailing list