What is C++?
Released
in 1985, C++ is an object-oriented programming language created by Bjarne
Stroustrup. C++ maintains almost all aspects of the C language, while
simplifying memory management and adding several features - including a new
datatype known as a class (you will learn more about these later) - to allow
object-oriented programming. C++ maintains the features of C which allowed for
low-level memory access but also gives the programmer new tools to simplify
memory management.
C++ used for:
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++.
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.
What is the difference between realloc() and free()?
The free subroutine frees a block of memory previously allocated by the malloc
subroutine. Undefined results occur if the Pointer parameter is not a valid
pointer. If the Pointer parameter is a null value, no action will occur. 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.
What is function overloading and operator overloading?
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 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).
What is the difference between declaration and definition?
The declaration tells the compiler that at some later point we plan to present
the definition of this declaration.
E.g.: void stars () //function declaration
The definition contains the actual implementation.
E.g.: void stars () // declarator
{
for(int j=10; j > =0; j--) //function body
cout << *;
cout << endl; }
What are the advantages of inheritance?
It permits code reusability. Reusability saves time in program development. It
encourages the reuse of proven and debugged high-quality software, thus
reducing problem after a system becomes functional.
How do you write a function that can reverse a linked-list?
void reverselist(void)
{
if(head==0)
return;
if(head->next==0)
return;
if(head->next==tail)
{
head->next = 0;
tail->next = head;
}
else
{
node* pre = head;
node* cur = head->next;
node* curnext = cur->next;
head->next = 0;
cur-> next = head;
for(; curnext!=0; )
{
cur->next = pre;
pre = cur;
cur = curnext;
curnext = curnext->next;
}
curnext->next = cur;
}
}
What do you mean by inline function?
The
idea behind inline functions is to insert the code of a called function at the
point where the function is called. If done carefully, this can improve the
application's performance in exchange for increased compile time and possibly
(but not always) an increase in the size of the generated binary executables.
Write a program that ask for user input from 5 to 9 then calculate
the average
#include "iostream.h"
int main() {
int MAX = 4;
int total = 0;
int average;
int numb;
for (int i=0; i<MAX; i++) {
cout << "Please enter your input between 5 and 9: ";
cin >> numb;
while ( numb<5 || numb>9) {
cout << "Invalid input, please re-enter: ";
cin >> numb;
}
total = total + numb;
}
average = total/MAX;
cout << "The average number is: " << average <<
"\n";
return 0;
}
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 << \",\";
What is public, protected, private?
Public,
protected and private are three access specifier in C++.
Public data members and member functions are accessible outside the class.
Protected data members and member functions are only available to derived
classes.
Private data members and member functions can’t be accessed outside the class.
However there is an exception can be using friend classes.
Write a function that swaps the values of two integers, using int* as the
argument type.
void swap(int* a, int*b) {
int t;
t = *a;
*a = *b;
*b = t;
}
Tell how to check whether a linked list is circular.
Create two pointers, each set to the start of the list. Update each as follows:
while
(pointer1) {
pointer1 = pointer1->next;
pointer2 = pointer2->next;
if (pointer2) pointer2=pointer2->next;
if (pointer1 == pointer2)
{
print (\"circular\n\");
}
}
OK, why does this work?
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.
What is virtual constructors/destructors?
Answer1
Virtual destructors:
If an object (with a non-virtual destructor) is destroyed explicitly by
applying the delete operator to a base-class pointer to the object, the
base-class destructor function (matching the pointer type) is called on the
object.
There is a simple solution to this problem declare a virtual base-class
destructor.
This makes all derived-class destructors virtual even though they don’t have
the same name as the base-class destructor. Now, if the object in the hierarchy
is destroyed explicitly by applying the delete operator to a base-class pointer
to a derived-class object, the destructor for the appropriate class is called.
Virtual constructor: Constructors cannot be virtual. Declaring a constructor as
a virtual function is a syntax error.
Answer2
Virtual destructors: If an object (with a non-virtual destructor) is destroyed
explicitly by applying the delete operator to a base-class pointer to the
object, the base-class destructor function (matching the pointer type) is
called on the object.
There is a simple solution to this problem – declare a virtual base-class
destructor. This makes all derived-class destructors virtual even though they
don’t have the same name as the base-class destructor. Now, if the object in
the hierarchy is destroyed explicitly by applying the delete operator to a
base-class pointer to a derived-class object, the destructor for the
appropriate class is called.
What is a template?
Templates allow to
create generic functions that admit any data type as parameters and return
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.
Explain
differences between eg. new() and malloc()
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.
What is the difference between class and structure?
Structure: Initially (in C) a
structure was used to bundle different type of data types together to perform a
particular functionality. But C++ extended the structure to contain functions
also. The major difference is that all declarations inside a structure are by default
public.
Class: Class is a successor of
Structure. By default all the members inside the class are private.
What do you mean by inheritance?
Inheritance is the process of
creating new classes, called derived classes, from existing classes or base classes.
The derived class inherits all the capabilities of the base class, but can add
embellishments and refinements of its own.
What is namespace?
Namespaces allow us
to group a set of global classes, objects and/or functions under a name. To say
it somehow, they serve to split the global scope in sub-scopes known as
namespaces.
What is a class?
Class is a user-defined data type in
C++. It can be created to solve a particular kind of problem. After creation
the user need not know the specifics of the working of a class.
What is friend function?
As the name suggests, the function
acts as a friend to a class. As a friend of a class, it can access its private
and protected members. A friend function is not a member of the class. But it
must be listed in the class definition.
What are virtual functions?
A virtual function allows derived
classes to replace the implementation provided by the base class. The compiler
makes sure the replacement is always called whenever the object in question is
actually of the derived class, even if the object is accessed by a base pointer
rather than a derived pointer. This allows algorithms in the base class to be
replaced in the derived class, even if users don't know about the derived
class.
What is polymorphism? Explain with an example?
"Poly" means
"many" and "morph" means "form". Polymorphism is
the ability of an object (or reference) to assume (be replaced by) or become
many different forms of object.
Example: function overloading,
function overriding, virtual functions. Another example can be a plus ‘+’ sign,
used for adding two integers or for using it to concatenate two strings.
what
is an abstract class?
Abstract
class ia a base class that provides some invariant functionality but leaves
implementation of other members to inheriting classes. You can accomplish this
through the use of abstract classes which are classes that must be inherited.
Abstract
classes are similar to interfaces but share many features with classes. An
abstract class cannot be instantiated on its own; it must be inherited first.
Abstract classes can provide all some or none of the actual implementation of a
class. Like interfaces they can specify members that must be implemented in
inheriting
Difference
between data encapsulation and abstraction?
Encapsulation:
Data and function that operate on that data are wrapped in a single unit.
Abstaction:
In abstratction only interface in exopsed the underlying details of the
particular function is hidden from the programmer. So one does'nt need to worry
about the details of a particular method he or she just calls the method