Thursday, September 4, 2014

C++ Resources

To read more articles and questions related to C++ . You can read my new blog   C++ Articles.  Also if you are preparing for competitive examination then please refer the PSC Jobs . where you can finds questions article related to PSC.

Monday, May 28, 2012

Convert int to string in C++

STRINGSTREAM can be used  in C++ to convert int to string


string int2str (int n) {
stringstream ss;
ss << n;
return ss.str();
}

How to convert string to integer in C++

With the help of stringstream a string can be converted into integer
 

int str2int (const string &str) {
stringstream ss(str);
int n;
ss >> n;
return n;
}


Thursday, July 1, 2010

More job interview questions

Below are few of the resources from where you can get interview questions:
Job Interview Questions : More than 10000 job interview questions with solution to prepare for your job interview

Interview Questions

Thursday, February 4, 2010

What is RTTI in C++ ?

Runtime Type Information (RTTI) is the concept of determining the type of any variable during execution (runtime.) The RTTI mechanism contains:

  • The operator dynamic_cast
  • The operator typeid
  • The struct type_info
RTTI can only be used with polymorphic types. This means that with each class you make, you must have at least one virtual function
The dynamic_cast can only be used with pointers and references to objects. It makes sure that the result of the type conversion is valid and complete object of the requested class.


// dynamic_cast
#include
#include
using namespace std;

class Base_Class { virtual void dummy() {} };
class Derived_Class: public Base_Class { int a; };

int main () {
try {
Base_Class * ptr_a = new Derived_Class;
Base_Class * ptr_b = new Base_Class;
Derived_Class * ptr_c;

ptr_c = dynamic_cast< Derived_Class* >(ptr_a);
if (ptr_c ==0) cout << "Null pointer on first type-cast" << endl;


ptr_c = dynamic_cast< Derived_Class* >(ptr_b);
if (ptr_c ==0) cout << "Null pointer on second type-cast" << endl;


} catch (exception& my_ex) {cout << "Exception: " << my_ex.what();}
return 0;
}

There are two dynamic_casts from pointer objects of type Base_Class* (namely ptr_a and ptr_b) to a pointer object of type Derived_Class*.

If everything goes well then the first one should be successful and the second one will fail. The pointers ptr_a and ptr_b are both of the type Base_Class. The pointer ptr_a points to an object of the type Derived_Class. The pointer ptr_b points to an object of the type Base_Class. So when the dynamic type cast is performed then ptr_a is pointing to a full object of class Derived_Class, but the pointer ptr_b points to an object of class Base_Class. This object is an incomplete object of class Derived_Class; thus this cast will fail!

bad_cast exception is being thrown in case of conversion fail.

Typeid return an structure of type_info . You can get the detail and type of the object at run time.

int * a;
int b;
a=0; b=0;
if (typeid(a) != typeid(b))
{
cout << "a and b are of different types:\n";
cout << "a is: " << typeid(a).name() << '\n';
cout << "b is: " << typeid(b).name() << '\n';
}


C++ Resources and Interview Questions

Below are few links on C++ Resources which can help you on your interview preparation
Free C++ Books
Free C Books
C++ Interview Questions
C++ Questions
Interview Questions

What is vprt, v-table and how virtual function works

Whenever a program has a virtual function declared, a v - table is constructed for the class. The v-table consists of addresses to the virtual functions for classes that contain one or more virtual functions. The object of the class containing the virtual function contains a virtual pointer that points to the base address of the virtual table in memory. Whenever there is a virtual function call, the v-table is used to resolve to the function address. An object of the class that contains one or more virtual functions contains a virtual pointer called the vptr at the very beginning of the object in the memory. Hence the size of the object in this case increases by the size of the pointer. This vptr contains the base address of the virtual table in memory. Note that virtual tables are class specific, i.e., there is only one virtual table for a class irrespective of the number of virtual functions it contains. This virtual table in turn contains the base addresses of one or more virtual functions of the class. At the time when a virtual function is called on an object, the vptr of that object provides the base address of the virtual table for that class in memory. This table is used to resolve the function call as it contains the addresses of all the virtual functions of that class