Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Instantiating a class


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 Brian Jones   Members   -  Reputation: 122

Like
Likes
Like

Posted 01 July 2001 - 08:10 AM

Could someone please explain what instantiating a class, and what an instance of a class means? Im not really sure what it means. Somebody said that if you have a class called Bus, and you create an object Bus driver; you are instantiating class Bus. And by instantiating the class, you are allocating memory for all the data members in that are in class Bus. Im not really sure what that means. He also said that "driver is an instance of class Bus." <--- I definently do know what that means Thank you. Only???

Sponsor:

#2 Kylotan   Moderators   -  Reputation: 3338

Like
Likes
Like

Posted 01 July 2001 - 08:25 AM

Ok... the word ''Bus'' is a concept... embodying a large vehicle, numerous seats, or whatever. Now, see the thing driving down the road full of people? That is an instance of a Bus. An instance is a physical representation of a concept. There can be any number of instances of that concept.

In code terms:

  
// This is the Bus concept, embodied as a class

class Bus
{
int number_of_seats;
int colour;
int driver;
};

// Now we make an instance of a Bus, called bus1;

Bus bus1;
// And another one, called bus2;

Bus bus2;

Note that your original example was incorrect: it doesn''t make sense for driver to be an instance of Bus. Driver is perhaps part of a Bus, but an instance of a Bus is a Bus. With me?

To ''instantiate'' is to ''create an instance''. So, the line "Bus bus1" instantiated a ''Bus'' object called ''bus1''. Just like the line ''int xyz'' instantiates an ''int'' object called ''xyz''.

Is that any help?


#3 Pixelisator   Members   -  Reputation: 122

Like
Likes
Like

Posted 01 July 2001 - 08:30 AM

It''s quite simple. First you have to create your class :

class bus
{
protected:
const char *driver;
unsigned long seats;
unsigned long capacity;

public:
int showdrivername();
};

But, VC++ can''t use a class in this way, you must create an instance of it. That means the compiler will allocate as for a variable memory to stock the all the data of the class.
In this case, it will allocate memory for the 3 variables (driver, seats, capacity) and for the procedure showdrivername();

You create an instance of a class this way:
for ex: bus *mybus;

This way with your variable mybus, you can use all data members of the class. Ex: mybus->capacity=50;

The class structure is very cool if you have several same objects of the same type. In this case you can have for example 3 buses and assign different value for each one.

Ex:
bus *mybus1;
bus *mybus2;
bus *mybus3;

mybus1->capacity = 100;
mybus2->capacity = 150;
mybus3->capacity = 200;


This is what we call instancing;

hope I was of any help !

#4 Outworlder   Members   -  Reputation: 100

Like
Likes
Like

Posted 01 July 2001 - 08:31 AM

(Post removed because other people were faster than I and explained better). Phew... guys, you're fast.

Gaiomard Dragon
-===(UDIC)===-

Edited by - Outworlder on July 1, 2001 3:36:31 PM

#5 Anonymous Poster_Anonymous Poster_*   Guests   -  Reputation:

Likes

Posted 01 July 2001 - 08:56 AM


quote:
Original post by Pixelisator

Ex:
bus *mybus1;
bus *mybus2;
bus *mybus3;

mybus1->capacity = 100;
mybus2->capacity = 150;
mybus3->capacity = 200;




Shouldn''t that be:

bus *mybus1 = new bus;
bus *mybus2 = new bus;
bus *mybus2 = new bus;



#6 Brian Jones   Members   -  Reputation: 122

Like
Likes
Like

Posted 01 July 2001 - 09:21 AM

Yes, ya''ll are fast. I think I get it. So what you guys are saying, is that instantiating a class is CREATING an object that has access to all public members of that class. And that the compiler will allocate all the memory for all the variables in the class to the object that was created. Is that correct?

Also, why would mybus1, mybus2, mybus3 need to be on the heap?

#7 Kylotan   Moderators   -  Reputation: 3338

Like
Likes
Like

Posted 01 July 2001 - 07:36 PM

No, instantiating a class has access to all the members of the class. Otherwise there''d be no point to protected and private members. It''s other classes that can''t access the protected and private members.

As for the heap issue, well Pixelisator accidentally confused matters by declaring pointers to Buses instead of actual Buses. When you declare a pointer, you generally then have to create the actual object on the heap. But there is no reason you can''t just have a class on the stack.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS