Differentiate between a template class and
Template class: A generic definition or a parameterized class not
instantiated until the client provides the needed information. It’s
jargon for plain templates. Class template: A class template specifies
how individual classes can be constructed much like the way a class
specifies how individual objects can be constructed. It’s jargon for
When does a name clash occur?
A name clash occurs when a name is defined in more than one place. For
example., two different class libraries could give two different classes
the same name. If you try to use many class libraries at the same time,
there is a fair chance that you will be unable to compile or link the
program because of name clashes.
It is a feature in C++ to minimize name collisions in the global name
space. This namespace keyword assigns a distinct name to a library that
allows other libraries to use the same identifier names without creating
any name collisions. Furthermore, the compiler uses the namespace
signature for differentiating the definitions.
What is the use of ‘using’ declaration. ?
A using declaration makes it possible to use a name from a namespace
without the scope operator.
What is an Iterator class ?
A class that is used to traverse through the objects maintained by a
container class. There are five categories of iterators: input iterators,
output iterators, forward iterators, bidirectional iterators, random
access. An iterator is an entity that gives access to the contents of a
container object without violating encapsulation constraints. Access to
the contents is granted on a one-at-a-time basis in order. The order can
be storage order (as in lists and queues) or some arbitrary order (as in
array indices) or according to some ordering relation (as in an ordered
binary tree). The iterator is a construct, which provides an interface
that, when called, yields either the next element in the container, or
some value denoting the fact that there are no more elements to examine.
Iterators hide the details of access to and update of the elements of a
The simplest and safest iterators are those that permit read-only access
to the contents of a container class.
What is an incomplete type?
Incomplete types refers to pointers in which there is non availability
of the implementation of the referenced location or it points to some
location whose value is not available for modification.
int *i=0x400 // i points to address 400
*i=0; //set the value of memory location pointed by i.
Incomplete types are otherwise called uninitialized pointers.
What is a dangling pointer?
A dangling pointer arises when you use the address of an object after
its lifetime is over. This may occur in situations like returning
addresses of the automatic variables from a function or using the
address of the memory block after it is freed. The following
code snippet shows this:
ptr = new int(i);
cout << "The value is " << *ptr;
void SomeFunc(Sample x)
cout << "Say i am in someFunc " << endl;
Sample s1 = 10;
In the above example when PrintVal() function is
called it is called by the pointer that has been freed by the
destructor in SomeFunc.