| |
What is an object in C++?
An object is a package that contains related data and
instructions. The data relates to what the object represents,
while the instructions define how this object relates to other
objects and itself.
What is a message?
A message is a signal from one object to another requesting
that a computation take place. It is roughly equivalent to a
function call in other languages.
What is a class?
A class defines the characteristics of a certain type of
object. It defines what its members will remember, the
messages to which they will respond, and what form the
response will take.
What is an instance?
An individual object that is a member of some class.
What is a super-class?
Given a class, a super-class is the basis of the class under
consideration. The given class is defined as a subset (in some
respects) of the super-class. Objects of the given class
potentially posses all the characteristics belonging to
objects of the super-class.
What is inheritance?
Inheritance is property such that a parent (or super) class
passes the characteristics of itself to children (or sub)
classes that are derived from it. The sub-class has the option
of modifying these characteristics in order to make a
different but fundamentally related class from the
super-class.
To what does message protocol refer?
An object's message protocol is the exact form of the set of
messages to which the object can respond.
What is polymorphism?
Polymorphism refers to the ability of an object to respond in
a logically identical fashion to messages of the same
protocol, containing differing types of objects. Consider 1 +
5 and 1 + 5.1. In the former, the message "+ 5" is sent to an
object of class integer (1). In the later, the message "+ 5.1"
is sent to the same integer object. The form of the message
(its protocol) is identical in both cases. What differs is the
type of object on the right-hand side of these messages. The
former is an integer object (5) while the later is a floating
point object (5.1). The receiver (1) appears (to other
objects) to respond in the same way to both messages.
Internally, however, it knows that it must treat the two types
of objects differently in order to obtain the same overall
response.
What are instance variables?
These represent an object's private memory. They are defined
in an object's class.
What are class variables?
These represent a class's memory which it shares with each of
its instances.
What is a method?
A method is a class's procedural response to a given message
protocol. It is like the definition of a procedure in other
languages.
In C++ what is a constructor? A destructor?
A constructors and destructors are methods defined in a class
that are invoked automatically when an object is created or
destroyed. They are used to initialize a newly allocated
object and to cleanup behind an object about to be removed.
Compare and contrast C and C++.
Comparison: C++ is an extension to the C language. When C++ is
used as a procedural language, there are only minor
syntactical differences between them.
Contrast: When used as a procedural language, C++ is a better
C because:
It vigorously enforces data typing conventions.
It allows variables to be defined where they are used.
It allows the definition of real (semantically significant)
constants.
It allows for automatic pointer dereferencing.
It supports call-by-reference in addition to call-by-value in
functions.
It supports tentative variable declarations (when the type and
location of a variable cannot be known before hand.
As an object oriented language, C++ introduces much of the OOP
paradigm while allowing a mixture of OOP and procedural
styles.
What is operator overloading?
It is the process of, and ability to redefine the way an
object responds to a C++ operator symbol. This would be done
in the object's class definition.
What is cin and cout?
They are objects corresponding to a program's default input
and output files.
What are the differences
between a C++ struct and C++ class?
The default
member and base class access specifiers are different.
This is one
of the commonly misunderstood aspects of C++. Believe it or
not, many programmers think that a C++ struct is just like a C
struct, while a C++ class has inheritance, access specifiers,
member functions, overloaded operators, and so on. Some of
them have even written books about C++. Actually, the C++
struct has all the features of the class. The only differences
are that a struct defaults to public member access and public
base class inheritance, and a class defaults to the private
access specifier and private base class inheritance. Getting
this question wrong does not necessarily disqualify you
because you will be in plenty of good company. Getting it
right is a definite plus.
What is a default constructor?
A constructor that has no arguments or one where all the
arguments have default argument values.
If you don't code a default constructor, the compiler provides
one if there are no other constructors. If you are going to
instantiate an array of objects of the class, the class must
have a default constructor.
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.
What are the access privileges in C++ ? What is the
default access level ?
The access privileges in C++ are private, public and
protected. The default access level assigned to members of a
class is private. Private members of a class are accessible
only within the class and by friends of the class. Protected
members are accessible by the class itself and it's
sub-classes. Public members of a class can be accessed by
anyone.
What is data encapsulation ?
Data Encapsulation is also known as data hiding. The most
important advantage of encapsulation is that it lets the
programmer create an object and then provide an interface to
the object that other objects can use to call the methods
provided by the object. The programmer can change the internal
workings of an object but this transparent to other
interfacing programs as long as the interface remains
unchanged.
What is inheritance ?
Inheritance is the process of deriving classes from other
classes. In such a case, the sub-class has an 'is-a'
relationship with the super class. For e.g. vehicle can be a
super-class and car can be a sub-class derived from vehicle.
In this case a car is a vehicle. The super class 'is not a'
sub-class as the sub- class is more specialized and may
contain additional members as compared to the super class. The
greatest advantage of inheritance is that it promotes generic
design and code reuse.
What is multiple inheritance ? What are it's advantages
and disadvantages ?
Multiple Inheritance is the process whereby a sub-class can be
derived from more than one super class. The advantage of
multiple inheritance is that it allows a class to inherit the
functionality of more than one base class thus allowing for
modeling of complex relationships. The disadvantage of
multiple inheritance is that it can lead to a lot of confusion
when two base classes implement a method with the same name.
What is polymorphism?
Polymorphism refers to the ability to have more than one
method with the same signature in an inheritance hierarchy.
The correct method is invoked at run-time based on the context
(object) on which the method is invoked. Polymorphism allows
for a generic use of method names while providing specialized
implementations for them.
What do the keyword static and const signify ?
When a class member is declared to be of a static type, it
means that the member is not an instance variable but a class
variable. Such a member is accessed using Classname.Membername
(as opposed to Object.Membername). Const is a keyword used in
C++ to specify that an object's value cannot be changed.
How is memory allocated/deallocated in C ? How about C++ ?
Memory is allocated in C using malloc() and freed using
free(). In C++ the new() operator is used to allocate memory
to an object and the delete() operator is used to free the
memory taken up by an object.
What is an explicit constructor?
A conversion constructor declared with the explicit keyword.
The compiler does not use an explicit constructor to implement
an implied conversion of types. Its purpose is reserved
explicitly for construction.
What is the Standard Template Library?
A library of container templates approved by the ANSI
committee for inclusion in the standard C++ specification.
An applicant who then launches into a discussion of the
generic programming model, iterators, allocators, algorithms,
and such, has a higher than average understanding of the new
technology that STL brings to C++ programming.
Describe run-time type identification.
The ability to determine at run time the type of an object by
using the typeid operator or the dynamic_cast operator.
What problem does the namespace feature solve?
Multiple providers of libraries might use common global
identifiers causing a name collision when an application tries
to link with two or more such libraries. The name-space
feature surrounds a library's external declarations with a
unique namespace that eliminates the potential for those
collisions.
This solution assumes that two library vendors don't use the
same namespace, of course.
Are there any new intrinsic (built-in) data types?
Yes. The ANSI committee added the bool intrinsic type and its
true and false value keywords and the wchar_t data type to
support character sets wider than eight bits.
Other apparent new types (string, complex, and so forth) are
implemented as classes in the Standard C++ Library rather than
as intrinsic types.
|