Interview : C++ Interview Questions (Page - 3)
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 container class. Something like a pointer.
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.
What
do you mean by Stack unwinding?
It is a process
during exception handling when the destructor is called for all local objects in
the stack between the place where the exception was thrown and where it is
caught.
Name the operators that cannot be overloaded?
sizeof, ., .*, .->, ::, ?:
What
is a container class? What are the types of container classes?
A container class
is a class that is used to hold objects in memory or external storage. A
container class acts as a generic holder. A container class has a predefined
behavior and a well-known interface. A container class is a supporting class
whose purpose is to hide the topology used for maintaining the list of objects
in memory. When a container class contains a group of mixed objects, the
container is called a heterogeneous container; when the container is holding a
group of objects that are all the same, the container is called a homogeneous
container.
What is inline function?
The __inline keyword tells the compiler to substitute the code within the
function definition for every instance of a function call. However, substitution
occurs only at the compiler's discretion. For example, the compiler does not
inline a function if its address is taken or if it is too large to inline.
What is overloading?
With the C++ language, you can overload functions and operators. Overloading is
the practice of supplying more than one definition for a given function name in
the same scope.
-
Any two functions in a set of overloaded functions must have different argument
lists.
- Overloading functions with argument lists of the same types, based on return
type alone,is an error.
What is Overriding?
To override a method, a subclass of the class that originally declared the
method must declare a method with the same name, return type (or a subclass of
that return type), and same parameter list.
The definition of the method overriding is:
• Must have same method name.
• Must have same data type.
• Must have same argument list.
Overriding a method means that replacing a method functionality in child class.
To imply overriding functionality we need parent and child classes. In the child
class you define the same method signature as one defined in the parent class.
What is "this" pointer?
The this pointer is a pointer accessible only within the member functions of
a class, struct, or union type. It points to the object for which the member
function is called. Static member functions do not have a this pointer. When a
nonstatic member function is called for an object, the address of the object is
passed as a hidden argument to the function. For example, the following function
call
myDate.setMonth(
3 );
can be interpreted this way:
setMonth( &myDate, 3 );
The object's address is available from within the member function as the this
pointer. It is legal, though unnecessary, to use the this pointer when referring
to members of the class.
What happens when you make call "delete
this;" ?
The code has two built-in pitfalls. First, if it executes in a member
function for an extern, static, or automatic object, the program will probably
crash as soon as the delete statement executes. There is no portable way for an
object to tell that it was instantiated on the heap, so the class cannot assert
that its object is properly instantiated. Second, when an object commits suicide
this way, the using program might not know about its demise. As far as the
instantiating program is concerned, the object remains in scope and continues to
exist even though the object did itself in. Subsequent dereferencing of the
pointer can and usually does lead to disaster.
You should never do this. Since compiler does not know whether the object was allocated on the stack or on the heap, "delete this" could cause a disaster.
How virtual functions are implemented C++?
Virtual functions are implemented using a table of function pointers, called the vtable. There is one entry in the table per virtual function in the class. This table is created by the constructor of the class. When a derived class is constructed, its base class is onstructed first which creates the vtable. If the derived class overrides any of the base classes virtual functions, those entries in the vtable are overwritten by the derived class constructor. This is why you should never call virtual functions from a constructor: because the vtable entries for the object may not have been set up by the derived class constructor yet, so you might end up calling base class implementations of those virtual functions.

