Programing IN C++
What is a
conversion constructor?
A constructor that accepts one argument of a different type.
The compiler uses this idiom as one way to infer conversion
rules for a class. A constructor with more than one argument and with default
argument values can be interpreted by the compiler as a conversion constructor
when the compiler is looking for an object of the type and sees an object of
the type of the constructor’s first argument.
=--------------------------------------------------------------------------------
What is the
difference between a copy constructor and an overloaded assignment operator?
A copy constructor constructs a new object by using the
content of the argument object. An overloaded assignment operator assigns the
contents of an existing object to another existing object of the same class.
First, you must know that a copy constructor is one that has
only one argument, which is a reference to the same type as the constructor.
The compiler invokes a copy constructor wherever it needs to make a copy of the
object, for example to pass an argument by value. If you do not provide a copy
constructor, the compiler creates a member-by-member copy constructor for you.
You can write overloaded assignment operators that take
arguments of other classes, but that behavior is usually implemented with
implicit conversion constructors. If you do not provide an overloaded
assignment operator for the class, the compiler creates a default
member-by-member assignment operator.
-------------------------------------------------------------------------------
What is a
virtual destructor?
The simple answer is that a virtual destructor is one that
is declared with the virtual attribute.
The behavior of a virtual destructor is what is important.
If you destroy an object through a pointer or reference to a base class, and
the base-class destructor is not virtual, the derived-class destructors are not
executed, and the destruction might not be complete.
-------------------------------------------------------------------------------
When is a template a better solution than a base
class?
When you are designing a generic class to contain or
otherwise manage objects of other types, when the format and behavior of those
other types are unimportant to their containment or management, and
particularly when those other types are unknown (thus the genericity) to the
designer of the container or manager class.
Prior to templates, you had to use inheritance; your design
might include a generic List container class and an application-specific
Employee class. To put employees in a list, a ListedEmployee class is multiply
derived (contrived) from the Employee and List classes. These solutions were
unwieldy and error-prone. Templates solved that problem.
-------------------------------------------------------------------------------
What is the difference between C and C++ ? Would you
prefer to use one over the other ?
C is based on structured programming whereas C++ supports
the object-oriented programming paradigm.Due to the advantages inherent in
object-oriented programs such as modularity and reuse, C++ is preferred.
However almost anything that can be built using C++ can also be built using C.