1.
Is it possible to have Virtual Constructor? If yes, how? If not, Why
not possible ?
There is nothing like Virtual Constructor.
The Constructor cant be virtual as the constructor is a code which is
responsible for creating a instance of a class and it cant be delegated
to any other object by virtual keyword means.
2.
What about Virtual Destructor?
Yes there is a Virtual Destructor. A destructor can be virtual as it is
possible as at runtime depending on the type of object baller is balling
to , proper destructor will be called.
3.
What is Pure Virtual Function? Why and when it is used ?
The abstract class whose pure virtual method has to be implemented by
all the classes which derive on these. Otherwise it would result in a
compilation error.
This construct should be used when one wants to ensure that all the
derived classes implement the method defined as pure virtual in base
class.
4.
What is problem with Runtime type identification?
The run time type identification comes at a cost of performance penalty.
Compiler maintains the class.
5.
How Virtual functions call up is maintained?
Through Look up tables added by the compile to every class image. This
also leads to performance penalty.
6.
Can inline functions have a recursion?
No.
Syntax wise It is allowed. But then the function is no longer Inline. As
the compiler will never know how deep the recursion is at compilation
time.
7.
How do you link a C++ program to C functions?
By using the extern "C" linkage specification around the C
function declarations.
Programmers should know about mangled function names and type-safe
linkages. Then they should explain how the extern "C"
linkage specification statement turns that feature off during
compilation so that the linker properly links function calls to C
functions.
8.
Explain the scope resolution operator?
It permits a program to reference an identifier in the global scope that
has been hidden by another identifier with the same name in the local
scope.
9.
How many ways are there to initialize an int with a
constant?
1. int foo = 123;
2. int bar(123);
10.
What is your reaction to this line of code?
delete this;
It is not a good programming Practice.
A good programmer will insist that you should absolutely never use the
statement if the class is to be used by other programmers and
instantiated as static, extern, or automatic objects. That much should
be obvious.
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
baller can and usually does lead to disaster. I think that the language
rules should disallow the idiom, but that's another matter.
11.
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.
12.
When should you use multiple inheritance?
There are three acceptable answers:- "Never,"
"Rarely," and "When the problem domain cannot be
accurately modeled any other way."
Consider an Asset class, Building
class, Vehicle class, and CompanyCar class. All company
cars are vehicles. Some company cars are assets because the
organizations own them. Others might be leased. Not all assets are
vehicles. Money accounts are assets. Real estate holdings are assets.
Some real estate holdings are buildings. Not all buildings are assets.
Ad infinitum. When you diagram these relationships, it becomes apparent
that multiple inheritance is a likely and intuitive way to model this
common problem domain. The applicant should understand, however, that
multiple inheritance, like a chainsaw, is a useful tool that has its
perils, needs respect, and is best avoided except when nothing else will
do.
13.
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 baller 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 comple
14.
Can a constructor throw a exception? How to handle the error when
the constructor fails?
The constructor never throws a error.
15.
What are the debugging methods you use when came across a problem?
Debugging with tools like :
GDB, DBG, Forte, Visual Studio.
Analyzing the Core dump.
Using tusc to trace the last
system call before crash.
Putting Debug statements in the
program source code.
16.
How the compilers arranges the various sections in the executable
image?
The executable had following sections:-
Data Section (uninitialized data
variable section, initialized data variable section )
Code Section
Remember that all static variables
are allocated in the initialized variable section.
17.
Explain the ISA and HASA class relationships. How would you
implement each in a class design?
A specialized class "is" a specialization of another class
and, therefore, has the ISA relationship with the other class.
This relationship is best implemented by embedding an object of the Salary
class in the Employee class.
18.
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 generality)
to the designer of the container or manager class.
19.
What are the differences between a C++ struct and C++ class?
The default member and base-class access specifies 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 specifies, member functions,
overloaded operators, and so on. 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 specified and private
base-class inheritance.
20.
How do you know that your class needs a virtual destructor?
If your class has at least one virtual function, you should make a
destructor for this class virtual. This will allow you to delete a
dynamic object through a baller to a base class object. If the
destructor is non-virtual, then wrong destructor will be invoked during
deletion of the dynamic object.
21.
What is the difference between new/delete and malloc/free?
Malloc/free do not know about constructors and destructors. New and
delete create and destroy objects, while malloc and free allocate and
deallocate memory.
22.
What happens when a function throws an exception that was not
specified by an exception specification for this function?
Unexpected() is called, which, by default, will eventually trigger
abort().
23.
Can you think of a situation where your program would crash without
reaching the breakball, which you set at the beginning of main()?
C++ allows for dynamic initialization of global variables before main()
is invoked. It is possible that initialization of global will invoke
some function. If this function crashes the crash will occur before
main() is entered.
24.
What issue do auto_ptr objects address?
If you use auto_ptr objects you would not have to be concerned with heap
objects not being deleted even if the exception is thrown.
25.
Is there any problem with the following:
char *a=NULL; char& p = *a;?
The result is undefined. You should never do this. A reference must
always refer to some object.
26.
Why do C++ compilers need name mangling?
Name mangling is the rule according to which C++ changes function's name
into function signature before passing that function to a linker. This
is how the linker differentiates between different functions with the
same name.
27.
Is there anything you can do in C++ that you cannot do in C?
No. There is nothing you can do in C++ that you cannot do in C. After
all you can write a C++ compiler in C
- What
are the major differences between C and C++?
- What
are the differences between
new and malloc ?
- What
is the difference between
delete and delete[] ?
- What
are the differences between a struct in C and in C++?
- What
are the advantages/disadvantages of using
#define ?
- What
are the advantages/disadvantages of using
inline
and const ?
- What
is the difference between a baller and a reference?
- When
would you use a baller? A reference?
- What
does it mean to take the address of a reference?
- What
does it mean to declare a function or variable as
static ?
- What
is the order of initalization for data?
- What
is name mangling/name decoration?
- What
kind of problems does name mangling cause?
- How
do you work around them?
- What
is a class?
- What
are the differences between a struct and a class in C++?
- What
is the difference between public, private, and protected access?
- For
class
CFoo { };
what default methods will the compiler generate for you>?
- How
can you force the compiler to not generate them?
- What
is the purpose of a constructor? Destructor?
- What
is a constructor initializer list?
- When
must you use a constructor initializer list?
- What
is a:
- Constructor?
- Destructor?
- Default
constructor?
- Copy
constructor?
- Conversion
constructor?
- What
does it mean to declare a...
- member
function as
virtual ?
- member
function as
static ?
- member
function as
static ?
- member
variable as
static ?
- destructor
as
static ?
- Can
you explain the term "resource acquisition is
initialization?"
- What
is a "pure virtual" member function?
- What
is the difference between public, private, and protected
inheritance?
- What
is virtual inheritance?
- What is placement
new?
- What is the difference between
operator new
and the
new
operator?
- What
is exception handling?
- Explain
what happens when an exception is thrown in C++.
- What
happens if an exception is not caught?
- What
happens if an exception is throws from an object's constructor?
- What
happens if an exception is throws from an object's destructor?
- What
are the costs and benefits of using exceptions?
- When
would you choose to return an error code rather than throw an
exception?
- What
is a template?
- What
is partial specialization or template specialization?
- How
can you force instantiation of a template?
- What
is an iterator?
- What
is an algorithm (in terms of the STL/C++ standard library)?
- What is
std::auto_ptr?
- What is wrong with this statement?
std::auto_ptr ptr(new char[10]);
- It is
possible to build a C++ compiler on top of a C compiler. How would
you do this?
|