C++ - Reference Book
C++ - Reference Book
Training
Faculty
Aptitude
Development
Training
Program
SIX
PHRASE
Corporate
Finance Training
Coaching
Technical
Training
1) What is C++?
C++ is a powerful general-purpose programming language. It can be used to create small programs
or large applications. It can be used to make CGI scripts or console-only DOS programs. C++
allows you to create programs to do almost anything you need to do. The creator of C++, Bjarne
Stroustrup, has put together a partial list of applications written in C++.
2) How do you find out if a linked-list has an end? (i.e. the list is not a cycle)
You can find out by using 2 pointers. One of them goes 2 nodes each time. The second one goes at
1 nodes each time. If there is a cycle, the one that goes 2 nodes each time will eventually meet the
one that goes slower. If that is the case, then you will know the linked-list is a cycle.
The realloc subroutine changes the size of the block of memory pointed to by the Pointer
parameter to the number of bytes specified by the Size parameter and returns a new pointer to the
block. The pointer specified by the Pointer parameter must have been created with the malloc,
calloc, or realloc subroutines and not been deallocated with the free or realloc subroutines.
Undefined results occur if the Pointer parameter is not a valid pointer.
Function overloading: C++ enables several functions of the same name to be defined, as long as
these functions have different sets of parameters (at least as far as their types are concerned). This
1
C++ - Reference Book
capability is called function overloading. When an overloaded function is called, the C++
compiler selects the proper function by examining the number, types and order of the arguments
in the call. Function overloading is commonly used to create several functions of the same name
that perform similar tasks but on different data types.
Operator overloading allows existing C++ operators to be redefined so that they work on objects
of user-defined classes. Overloaded operators are syntactic sugar for equivalent function calls.
They form a pleasant facade that doesn't add anything fundamental to the language (but they can
improve understandability and reduce maintenance costs).
7) Write a short code using C++ to print out all odd number from 1 to 100 using a for loop
for( unsigned int i = 1; i < = 100; i++ )
if( i & 0x00000001 )
cout << i << \",\";
2
C++ - Reference Book
while (pointer1) {
pointer1 = pointer1->next;
pointer2 = pointer2->next; if (pointer2) pointer2=pointer2->next;
if (pointer1 == pointer2) {
print (\"circular\n\");
}
}
If a list is circular, at some point pointer2 will wrap around and be either at the item just before
pointer1, or the item before that. Either way, it‘s either 1 or 2 jumps until they meet.
3
C++ - Reference Book
4
C++ - Reference Book
Array: User need not have to keep in track of next memory allocation.
List: User has to keep in Track of next location where memory is allocated.
Answer2
Array uses direct access of stored members, list uses sequencial access for members.
//With the list you have to cross all previous nodes in order to get the 5th node:
list mylist;
list::iterator it;
5
C++ - Reference Book
value without having to overload the function with all the possible data types. Until certain point
they fulfill the functionality of a macro. Its prototype is any of the two following ones:
template <class indetifier> function_declaration; template <typename indetifier>
function_declaration;
The only difference between both prototypes is the use of keyword class or typename, its use is
indistinct since both expressions have exactly the same meaning and behave exactly the same
way.
Answer2
class Point2D{
int x; int y;
public Point2D() : x(0) , y(0) {} //default (no argument) constructor
};
main(){
Point2D MyPoint; // Implicit Constructor call. In order to allocate memory on stack, the default
constructor is implicitly called.
Point2D * pPoint = new Point2D(); // Explicit Constructor call. In order to allocate memory on
HEAP we call the default constructor.
17) You have two pairs: new() and delete() and another pair : malloc() and free().
Explain differences between eg. new() and malloc()
6
C++ - Reference Book
Answer1
1.) ―new and delete‖ are preprocessors while ―malloc() and free()‖ are functions. [we dont use
brackets will calling new or delete].
2.) no need of allocate the memory while using ―new‖ but in ―malloc()‖ we have to use ―sizeof()‖.
3.) ―new‖ will initlize the new memory to 0 but ―malloc()‖ gives random value in the new alloted
memory location [better to use calloc()]
Answer2
new() allocates continous space for the object instace
malloc() allocates distributed space.
new() is castless, meaning that allocates memory for this specific type,
malloc(), calloc() allocate space for void * that is cated to the specific class type pointer.
7
C++ - Reference Book
class SHAPE{
public virtual Draw() = 0; //abstract class with a pure virtual method
};
class CIRCLE{
public int r;
public virtual Draw() { this->drawCircle(0,0,r); }
};
class SQURE
public int a;
public virtual Draw() { this->drawRectangular(0,0,a,a); }
};
Each object is driven down from SHAPE implementing Draw() function in its own way.
24) Describe PRIVATE, PROTECTED and PUBLIC – the differences and give examples.
class Point2D{
int x; int y;
8
C++ - Reference Book
Point2D MyPoint;
You cannot directly access private data members when they are declared (implicitly) private:
On the other hand, you can assign and read the public data members:
With protected data members you can read them but not write them: MyPoint.pinned = true; //
Compiler will issue a compile ERROR
9
C++ - Reference Book
class Point2D{
int x; int y;
main(){
Point2D MyPoint;
MyPoint.color = 345;
Point2D AnotherPoint = Point2D( MyPoint ); // now AnotherPoint has color = 345
10
C++ - Reference Book
29) What is the word you will use when defining a function in base class to allow this function to be a
polimorphic function?
virtual
33) Suppose that data is an array of 1000 integers. Write a single function call that will sort the 100
elements data [222] through data [321].
quicksort ((data + 222), 100);
11
C++ - Reference Book
36) Which recursive sorting technique always makes recursive calls to sort subarrays that are about
half size of the original array?
Mergesort always makes recursive calls to sort subarrays that are about half size of the original
array, resulting in O(n log n) time.
39) What is the difference between an external iterator and an internal iterator? Describe an
advantage of an external iterator.
An internal iterator is implemented with member functions of the class that has items to step
through. .An external iterator is implemented as a separate class that can be "attach" to the object
that has items to step through. .An external iterator has the advantage that many difference
iterators can be active simultaneously on the same object.
12
C++ - Reference Book
equated to zero.
class Shape { public: virtual void draw() = 0; };
45) Explain which of the following declarations will compile and what will be constant - a pointer or
the value pointed at: * const char *
* char const *
* char * const
Note: Ask the candidate whether the first declaration is pointing to a string or a single character.
Both explanations are correct, but if he says that it‘s a single character pointer, ask why a whole
string is initialized as char* in C++. If he says this is a string declaration, ask him to declare a
pointer to a single character. Competent candidates should not have problems pointing out why
const char* can be both a character and a string declaration, incompetent ones will come up with
invalid reasons.
46) You‘re given a simple code for the class Bank Customer. Write the following functions:
* Copy constructor
* = operator overload
* == operator overload
13
C++ - Reference Book
* + operator overload (customers‘ balances should be added up, as an example of joint account
between husband and wife)
Note:Anyone confusing assignment and equality operators should be dismissed from the
interview. The applicant might make a mistake of passing by value, not by reference. The
candidate might also want to return a pointer, not a new object, from the addition operator.
Slightly hint that you‘d like the value to be changed outside the function, too, in the first case.
Ask him whether the statement customer3 = customer1 + customer2 would work in the second
case.
14
C++ - Reference Book
identifier found within a block refers to that same object. If no other declaration for the identifier
exists at file scope, the identifier has external linkage.
51) What can I safely assume about the initial values of variables which are not explicitly initialized?
It depends on complier which may assign any garbage value to a variable if it is not initialized.
52) What is the difference between char a[] = ―string‖; and char *p = ―string‖;?
In the first case 6 bytes are allocated to the variable a which is fixed, where as in the second case if
*p is assigned to some other value the allocate memory can change.
Answer2
Local variables occur within a scope; they are ―local‖ to a function. They are often called
automatic variables because they automatically come into being when the scope is entered and
automatically go away when the scope closes. The keyword auto makes this explicit, but local
variables default to auto auto auto auto so it is never necessary to declare something as an auto
auto auto auto.
54) What is the difference between char a[] = ―string‖; and char *p = ―string‖; ?
Answer1
a[] = ―string‖;
char *p = ―string‖;
The difference is this:
p is pointing to a constant string, you can never safely say
15
C++ - Reference Book
p[3]=‘x';
however you can always say a[3]=‘x';
char a[]=‖string‖; - character array initialization.
char *p=‖string‖ ; - non-const pointer to a const-string.( this is permitted only in the case of char
pointer in C++ to preserve backward compatibility with C.)
Answer2
a[] = ―string‖;
char *p = ―string‖;
a[] will have 7 bytes. However, p is only 4 bytes. P is pointing to an adress is either BSS or the
data section (depending on which compiler — GNU for the former and CC for the latter).
Answer3
char a[] = ―string‖;
char *p = ―string‖;
for char a[]…….using the array notation 7 bytes of storage in the static memory block are taken
up, one for each character and one for the terminating nul character.
But, in the pointer notation char *p………….the same 7 bytes required, plus N bytes to store the
pointer variable ―p‖ (where N depends on the system but is usually a minimum of 2 bytes and can
be 4 or more)……
55) How do I declare an array of N pointers to functions returning pointers to functions returning
pointers to characters?
Answer1
If you want the code to be even slightly readable, you will use typedefs.
typedef char* (*functiontype_one)(void);
typedef functiontype_one (*functiontype_two)(void);
functiontype_two myarray[N]; //assuming N is a const integral
Answer2
16
C++ - Reference Book
char* (* (*a[N])())()
Here a is that array. And according to question no function will not take any parameter value.
void main()
{
void (*fp)(int);
fp=fun;
fp(1);
60) What are the differences between a C++ struct and C++ class?
The default member and base-class access specifier are different.
61) How many ways are there to initialize an int with a constant?
Two.
17
C++ - Reference Book
There are two formats for initializers in C++ as shown in the example that follows. The first
format uses the traditional C notation. The second format uses constructor notation.
int foo = 123;
int bar (123);
62) How does throwing and catching exceptions differ from using setjmp and longjmp?
The throw operation calls the destructors for automatic objects instantiated since entry to the try
block.
65) 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.
67) 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. An Employee ISA Person. This relationship is best implemented with
inheritance. Employee is derived from Person. A class may have an instance of another class. For
example, an employee "has" a salary, therefore the Employee class has the HASA relationship
with the Salary class. This relationship is best implemented by embedding an object of the Salary
class in the Employee class.
18
C++ - Reference Book
management, and particularly when those other types are unknown (thus, the generosity) to the
designer of the container or manager class.
19
C++ - Reference Book
76) In C++, what is the difference between method overloading and method overriding?
Overloading a method (or function) in C++ is the ability for functions of the same name to be
defined as long as these methods have different signatures (different set of parameters). Method
overriding is the ability of the inherited class rewriting the virtual method of the base class.
79) What is the diffrence between a "assignment operator" and a "copy constructor"?
Answer1.
In assignment operator, you are assigning a value to an existing object. But in copy constructor,
you are creating a new object and then assigning a value to that object. For example:
complex c1,c2;
c1=c2; //this is assignment
complex c3=c2; //copy constructor
Answer2.
A copy constructor is used to initialize a newly declared variable from an existing variable. This
makes a deep copy like assignment, but it is somewhat simpler:
There is no need to test to see if it is being initialized from itself.
There is no need to clean up (eg, delete) an existing value (there is none).
A reference to itself is not returned.
20
C++ - Reference Book
Answer2.
A "mutable" keyword is useful when we want to force a "logical const" data member to have its
value modified. A logical const can happen when we declare a data member as non-const, but we
have a const member function attempting to modify that data member. For example:
class Dummy {
public:
bool isValid() const;
private:
mutable int size_ = 0;
mutable bool validStatus_ = FALSE;
// logical const issue resolved
};
21
C++ - Reference Book
const int i = 2;
you can use this variable in other module as follows
extern const int i;
C compiler will not complain.
class test
{
int x,y;
public:
test()
{
x=0; y=0;
}
void mod()
{
x=10;
y=15;
}
};
22
C++ - Reference Book
23
C++ - Reference Book
class Sample
{
public:
int *ptr;
Sample(int i)
{
ptr = new int(i);
}
~Sample()
{
delete ptr;
}
void PrintVal()
{
cout << "The value is " << *ptr;
}
};
24
C++ - Reference Book
void SomeFunc(Sample x)
{
cout << "Say i am in someFunc " << endl;
}
int main()
{
Sample s1 = 10;
SomeFunc(s1);
s1.PrintVal();
}
Method
* Provides response to a message.
* It is an implementation of an operation.
25
C++ - Reference Book
98) What are the conditions that have to be met for a condition to be an invariant of the class?
* The condition should hold at the end of every constructor.
* The condition should hold at the end of every mutator (non-const) operation.
26
C++ - Reference Book
Array2D<float>data(10,20);
cout<<data[3][6]; // fine
Here data[3] yields an Array1D object and the operator [] invocation on that object yields the
float in position(3,6) of the original two dimensional array. Clients of the Array2D class need not
be aware of the presence of the Array1D class. Objects of this latter class stand for one-
dimensional array objects that, conceptually, do not exist for clients of Array2D. Such clients
program as if they were using real, live, two-dimensional arrays. Each Array1D object stands for a
one-dimensional array that is absent from a conceptual model used by the clients of Array2D. In
the above example, Array1D is a proxy class. Its instances stand for one-dimensional arrays that,
conceptually, do not exist.
27
C++ - Reference Book
103) 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.
28
C++ - Reference Book
Answer2
The major difference between B-tree and binary tres is that B-tree is a external data structure and
binary tree is a main memory data structure. The computational complexity of binary tree is
counted by the number of comparison operations at each node, while the computational
complexity of B-tree is determined by the disk I/O, that is, the number of node that will be loaded
from disk to main memory. The comparision of the different values in one node is not counted.
113) Describe one simple rehashing policy.
The simplest rehashing policy is linear probing. Suppose a key K hashes to location i. Suppose
other key occupies H[i]. The following function is used to generate alternative locations:
rehash(j) = (j + 1) mod h
where j is the location most recently probed. Initially j = i, the hash code for K. Notice that this
version of rehash does not depend on K.
29
C++ - Reference Book
114) Describe Stacks and name a couple of places where stacks are useful.
A Stack is a linear structure in which insertions and deletions are always made at one end, called
the top. This updating policy is called last in, first out (LIFO). It is useful when we need to check
some syntex errors, such as missing parentheses.
1)
30
Soft Skills Training Corporate Coaching
Survival of the Fittest Critical Thinking
English Grammar Gym Organizational Excellence
Career Skills Seven Habits of Highly
Oral Communication Effective People
Written Communication Business Skills
Goal Setting Presentation Skills
Resume Writing Conflict Management
Group Discussion Search Engine Optimization
Interview Skills Selling Skills
Reading & Learning Skills Working with MS Excel
Questioning & Listening Skills MS PowerPoint & MS Word
Personality Development Branding
Creativity Supply Chain
Time Management Channel Sales
Leadership Skills Retailing
Team Management Business Analytics & ERP
Entrepreneurship Skills