Hi all,

class A
{
   public:
           A();
           ~A();
}

class B
{
    public:
          B();
          ~B();
    private:
      A *a; ->declares a pointer to class A object
      A a; -> holds the class A object

}

Whats the difference between the 2 type of declaration of a class A instance? Are there any rules as to when to use pointer and when to use just object?

Please advise.

Cheers!

Pointers are often used in combination with dynamic memory allocation ...
Lets say you want to create a table of objects, but it depends on the situation where the program is in, you would rather use a pointer to a table of objects (dynamic memory allocation) ...
But when you're always having/needing the same number of objects you can better use the normal declaration ...

Hope this helps !

Thanks for the prompt reply.

Is the usage link with any OOD concepts or is it purely the memory allocation difference?

A pointer is only holding memory addresses ...

In a situation when you need to allocate another object for some task you can use the pointers of that class to fulfill the requirement.
lets just say,
i require to create another object of class_name * p;
so it will be like:

if(condition.....)
p = new data_type;

it will create the new allocated object of that class which you can use further.

Hummed I guess you meant something like:

class_name *p;

if (condition)
{
    p = new class_name;
}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.