NetSuite Most Frequently Asked C++ Interview Questions Answers

Write A Note On Encapsulation?

Encapsulation is an object-oriented design approach that closely binds the implementation of a class to its data representation, logically hides the details of the implementation from users of the data type, and provides a public interface to the data type's behavior. It implies an implementation, which is hidden from the class user, and an interface, which is visible to the class user. It helps you to handle large scale programming tasks.The idea behind encapsulation is to take a complex system that demands a lot of attention and to turn it into an object that handles all its work internally and can easily form a concept.

What Are The Effects After Calling The Delete This Operator ?

It is difficult for the compiler to know whether an object is allocated on a stack or a heap. On invoking the delete this operator, the destructor is called twice on the object related to the current context. Firstly implicitly and secondly explicitly. It results in undefined behavior and error-prone conditions. The delete this operator can only work on three conditions

 An Instantiation of a local variable should not take place, after calling the delete this destructor.
 The this pointer should not be used after calling the delete this operator.
 The object of a derived class should be allocated and initialized with the new operator
NetSuite Most Frequently Asked C++ Interview Questions Answers
NetSuite Most Frequently Asked C++ Interview Questions Answers

Can We Get The Value Of Ios Format Flags?

Yes! The ios::flags( ) member function gives the value format flags. This function takes no arguments and returns a long ( typedefed to fmtflags) that contains the current format flags.

Is There Any Function That Can Skip Certain Number Of Characters Present In The Input Stream?

Yes! This can be done using cin::ignore( ) function. The prototype of this function is as shown below

istream& ignore ( int n = 1, int d =EOF );
Sometimes it happens that some extra characters are left in the input stream while taking the input such as, the '\n' (Enter) character. This extra character is then passed to the next input and may pose problem.

To get rid of such extra characters the cin::ignore( ) function is used. This is equivalent to fflush ( stdin ) used in C language. This function ignores the first n characters (if present) in the input stream, stops if delimiter d is encountered.

When Should Overload New Operator On A Global Basis Or A Class Basis?

We overload operator new in our program, when we want to initialize a data item or a class object at the same place where it has been allocated memory. The following example shows how to overload new operator on global basis.

#include
#include
void * operator new ( size_t s )
{
   void *q = malloc ( s ) ;
   return q ;
}
void main( )
{
  int *p = new int ;
  *p = 25 ;
  cout << *p ;
}

When the operator new is overloaded on global basis it becomes impossible to initialize the data members of a class as different classes may have different types of data members. The following example shows how to overload new operator on class-by-class basis.
#include
#include
class sample
{
  int i ;
  public
     void* operator new ( size_t s, int ii )
     {
       sample *q = ( sample * ) malloc ( s ) ;
       q -> i = ii ;
       return q ;
     }
} ;
class sample1
{
   float f ;
   public
   void* operator new ( size_t s, float ff )
   {
     sample1 *q = ( sample1 * ) malloc ( s ) ;
     q -> f = ff ;
     return q ;
   }
 } ;
void main( )
{
  sample *s = new ( 7 ) sample ;
  sample1 *s1 = new ( 5.6f ) sample1 ;
}
Overloading the operator new on class-by-class basis makes it possible to allocate memory for an object and initialize its data members at the same place.

How To Give An Alternate Name To A Namespace?

An alternate name given to namespace is called a namespace-alias. namespace-alias is generally used to save the typing effort when the names of namespaces are very long or complex. The following syntax is used to give an alias to a namespace.

namespace myname = my_old_very_long_name ;

Define A Pointer To A Data Member Of The Type Pointer To Pointer?

The following program demonstrates this...

#include
class sample
{
  public
    sample ( int **pp )
    {
      p = pp ;
    }
    int **p ;
} ;
int **sample::*ptr = &sample::p ;
void main( )
{
  int i = 9 ;
  int *pi = &i ;
  sample s ( π ) ;
  cout << ** ( s.*ptr ) ;
}

Using A Smart Pointer Can We Iterate Through A Container?

Yes. A container is a collection of elements or objects. It helps to properly organize and store the data. Stacks, linked lists, arrays are examples of containers. Following program shows how to iterate through a container using a smart pointer.

#include
class smartpointer
{
  private
     int *p ; // ordinary pointer
     public
     smartpointer ( int n )
     {
       p = new int [ n ] ;
       int *t = p ;
       for ( int i = 0 ; i <= 9 ; i++ )
         *t++ = i * i ;
     }
     int* operator ++ ( int )
     {
       return p++ ;
     }
     int operator * ( )
     {
       return *p ;
     }
} ;
void main( )
{
   smartpointer sp ( 10 ) ;
   for ( int i = 0 ; i <= 9 ; i++ )
     cout << *sp++ << endl ;
}
Here, sp is a smart pointer. When we say *sp, the operator * ( ) function gets called. It returns the integer being pointed to by p. When we say sp++ the operator ++ ( ) function gets called. It increments p to point to the next element in the array and then returns the address of this new location.

Post a Comment

Previous Post Next Post