C and C++ Program important questions

C, C++ Interview Questions 

 1) What is virtual Constructors/Destructors 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. 

2) Does c++ support multilevel and multiple inheritance? 

Yes. 

3) 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. 4) 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< function_declaration; template 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. 8) 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. 9) What is RTTI Runtime type identification (RTTI) lets you find the dynamic type of an object when you have only a pointer or a reference to the base type. RTTI is the official way in standard C++ to discover the type of an object and to convert the type of a pointer or reference (that is, dynamic typing). The need came from practical experience with C++. RTTI replaces many homegrown versions with a solid, consistent approach. 10) What is encapsulation Packaging an object’s variables within its methods is called encapsulation. 11) What is an object Object is a software bundle of variables and related methods. Objects have state and behavior. 12) What is public, protected and private Public, protected and private are three access specifiers 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 13) 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. The form to use namespaces is: namespace identifier { namespace-body } Where identifier is any valid identifier and namespace-body is the set of classes, objects and functions that are included within the namespace. For example: namespace general { int a, b; } In this case, a and b are normal variables integrated within the general namespace. In order to access to these variables from outside the namespace we have to use the scope operator ::. For example, to access the previous variables we would have to put: general::a general::b The functionality of namespaces is specially useful in case that there is a possibility that a global object or function can have the same name than another one, causing a redefinition error. 14) 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. 15) What is function 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). 16) What is virtual and friend class Friend classes are used when two or more classes are designed to work together and need access to each other's implementation in ways that the rest of the world shouldn't be allowed to have. In other words, they help keep private things private. For instance, it may be desirable for class DatabaseCursor to have more privilege to the internals of class Database than main() has. 17) What do you mean by binding of data and functions? Encapsulation 18) What is the difference between object and class Classes and objects are separate but related concepts. Every object belongs to a class and every class contains one or more related objects. Ø A Class is static. All of the attributes of a class are fixed before, during, and after the execution of a program. The attributes of a class don't change. Ø The class to which an object belongs is also (usually) static. If a particular object belongs to a certain class at the time that it is created then it almost certainly will still belong to that class right up until the time that it is destroyed. Ø An Object on the other hand has a limited lifespan. Objects are created and eventually destroyed. Also during that lifetime, the attributes of the object may undergo significant change. 19) What is a 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 20) What is abstraction Abstraction is of the process of hiding unwanted details from the user 21) What are virtual function 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. 22) What is the scope resolution operator A scope resolution operator (::), can be used to define the member functions of a class outside the class. 23) What is pure virtual function A pure virtual member function is a member function that the base class forces derived classes to provide. Normally these member functions have no implementation. Pure virtual functions are equated to zero. class Shape { public: virtual void draw() = 0; }; 24) What is polymorphism explain with 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. 25) What is operator overloading When an operator is overloaded, it takes on an additional meaning relative to a certain class. But it can still retain all of its old meanings. Examples: 1) The operators >> and << may be used for I/O operations because in the header, they are overloaded. 2) In a stack class it is possible to overload the + operattor so that it appends the contents of one stack to the contents of another. But the + operator still retains its original meaning relative to other types of data. Also Polymorphism can be achieved in C++ through operator overloading 26) Declare a void pointervoid* p; 27) How do you call a C module within a C++ module. You should use extern "C" for functions, compiled by C compiler and called within a C++ class. You should do that to force the linker to resolve the function name (precisely, the mangling of the name) correctly 28) What is the difference between run time binding and compile time binding? Discuss. Compile Time Binding : In case of operator overloading and function overloading the name of the function is resolved during the compile time . Even if there are two or more functions with the same name the compiler mangles the name so that each function is uniquely identified . This has to be resolved at compile time and is known as compile-time binding or early binding. Run Time Binding : In case of polymorphism (virtual functions) if a base class pointer(or reference) is allocated a pointer(or reference) of derived class the actual function called is determined only during runtime through the virtual table entry . This is runtime binding or late binding 29) Class A derives B derives C. All have foo(). I cast C to A and call foo(). What happens? Actually, if access is NOT specified, it deafults to private derivation. In private derivation, binding is static. So, whether foo is declared virtual or not it still defaults to static binding. So, A->foo() is called. However, If a public derivation is specified from C <-- a="" and="" b="" c-="" foo="" if="" is="" then="" virtual="">foo() is called; if foo() is non virtual A->foo() is called. 30) 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 • Explain operator precendence. Operator precedence is the order in which operators are evaluated in a compound expression. For example, what is the result of the following expression? 6 + 3 * 4 / 2 + 2 Here is a compound expression with an insidious error. while ( ch = nextChar() != '\0' ) The programmer's intention is to assign ch to the next character then test that character to see whether it is null. Since the inequality operator has higher precendence than the assignment operator, the real result is that the next character is compared to null and ch is assigned the boolean result of the test (i.e. 0 or 1). • What are the access privileges in C++? What is the default access level? The access privileges in C++ are private, public and protected. The default access level assigned to members of a class is private. Private members of a class are accessible only within the class and by friends of the class. Protected members are accessible by the class itself and it's sub-classes. Public members of a class can be accessed by anyone. • What is data encapsulation? Data Encapsulation is also known as data hiding. The most important advantage of encapsulation is that it lets the programmer create an object and then provide an interface to the object that other objects can use to call the methods provided by the object. The programmer can change the internal workings of an object but this transparent to other interfacing programs as long as the interface remains unchanged. • What is inheritance? Inheritance is a mechanism through which a subclass inherits the properties and behavior of its superclass; the subclass has a ISA relationship with the superclass. For example Vehicle can be a superclass and Car can be a subclass derived from Vehicle. In this case a Car ISA Vehicle. The superclass 'is not a' subclass as the subclass is more specialized and may contain additional members as compared to the superclass. The greatest advantage of inheritance is that it promotes generic design and code reuse. • What is multiple inheritance? What are its advantages and disadvantages? Multiple Inheritance is the process whereby a sub-class can be derived from more than one super class. The advantage of multiple inheritance is that it allows a class to inherit the functionality of more than one base class thus allowing for modeling of complex relationships. The disadvantage of multiple inheritance is that it can lead to a lot of confusion when two base classes implement a method with the same name. • What is polymorphism? Polymorphism refers to the ability to have more than one method with the same signature in an inheritance hierarchy. The correct method is invoked at run-time based on the context (object) on which the method is invoked. Polymorphism allows for a generic use of method names while providing specialized implementations for them. • What do the keyword static and const signify? When a class member is declared to be of a static type, it means that the member is not an instance variable but a class variable. Such a member is accessed using Classname.Membername (as opposed to Object.Membername). Const is a keyword used in C++ to specify that an object's value cannot be changed. • What is a static member of a class? Static data members exist once for the entire class, as opposed to non-static data members, which exist individually in each instance of a class. • How do you access the static member of a class? ::. • What feature of C++ would you use if you wanted to design a member function that guarantees to leave this object unchanged? It is const as in: int MyFunc? (int test) const; • What is the difference between const char *myPointer; and char *const myPointer;? const char *myPointer; is a non-constant pointer to constant data; while char *const myPointer; is a constant pointer to non-constant data. • How is memory allocated/deallocated in C? How about C++? Memory is allocated in C using malloc() and freed using free(). In C++ the new() operator is used to allocate memory to an object and the delete() operator is used to free the memory taken up by an object. • What is the difference between public, protected, and private members of a class? Private members are accessible only by members and friends of the class. Protected members are accessible by members and friends of the class and by members and friends of derived classes. Public members are accessible by everyone. • How do you link a C++ program to C functions? By using the extern "C" linkage specification around the C function declarations. The candidate should know about mangled function names and type-safe linkages. 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. • What does extern "C" int func(int *, Foo) accomplish? It will turn off "name mangling" for func so that one can link to code compiled by a C compiler. • Why do C++ compilers need name mangling? Name mangling is the rule according to which C++ changes function names into function signatures before invoking the linker. Mangled names are used by the linker to differentiate between different functions with the same name. • What is function's signature? function's signature is its name plus the number and types of the parameters it accepts. • What are the differences between a C++ struct and C++ class? The default member and base class access specifiers are different. 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 specifier and private base class inheritance. • What is the difference between function overloading and function overriding? Overloading is a method that allows defining multiple member functions with the same name but different signatures. The compiler will pick the correct function based on the signature. Overriding is a method that allows the derived class to redefine the behavior of member functions which the derived class inherits from a base class. The signatures of both base class member function and derived class member function are the same; however, the implementation and, therefore, the behavior will differ. • Can you overload a function based only on whether a parameter is a value or a reference? No. Passing by value and by reference looks identical to the caller. • Can derived class override some but not all of a set of overloaded virtual member functions inherited from the base class? Compiler will allow this, but it is a bad practice since overridden member functions will hide all of the inherited overloads from the base class. You should really override all of them. • What is the difference between assignment and initialization in C++? Assignment changes the value of the object that has already been constructed. Initialization constructs a new object and gives it a value at the same time. • Name two cases where you MUST use initialization list as opposed to assignment in constructors. Both non-static const data members and reference data members cannot be assigned values; instead, you should use initialization list to initialize them. • When are copy constructors called? Copy constructors are called in three cases: when a function returns an object of that class by value, when the object of that class is passed by value as an argument to a function, and, finally, when you construct an object based on another object of the same class (Circle c1=c2;). • What is the difference between delete and delete[]? delete deletes one object; delete[] deletes an array of objects. • What is the difference between non-virtual and virtual functions? The behavior of a non-virtual function is known at compile time while the behavior of a virtual function is not known until the run time. • What is a pure virtual function? A pure virtual function is a function declared in a base class that has no definition relative to the base. • 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 pointer to a base class object. If the destructor is non-virtual, then the wrong destructor will be invoked during deletion of the dynamic object. • What is an abstract base class? A class that has one or more pure virtual functions. • What is your reaction to this line of code? delete this; It's not a good practice. A good programmer will insist that the statement is never to be used 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. 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. • What is a default constructor? A constructor that has no arguments or one where all the arguments have default argument values. The candicate should know that if you don't code a default constructor, the compiler provides one if there are no other constructors. If you are going to instantiate an array of objects of the class, the class must have a default constructor. • Why do you have to provide your own copy constructor and assignment operator for classes with dynamically allocated memory? If you don't, the compiler will supply and execute the default constructor and the assignment operator, but they will not do the job correctly. The default assignment operator does memberwise assignment and the default copy constructor does memberwise copy. In both cases you will only assign and manipulate pointers to dynamic memory, which will lead to memory leaks and other abnormalities. You should write your own assignment operator and copy constructor, which would copy the pointer to memory so that each object has its own copy. • 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. • What is the difference between a shallow copy and a deep copy? A shallow copy simply creates a new object and inserts in it references to the members of the original object. A deep copy constructs a new object and then creates in it copies of each of the members of the original object. • What is the difference between MyClass p; and MyClass p();? MyClass p; creates an instance of class MyClass by calling a constructor for MyClass. MyClass p(); declares function p which takes no parameters and returns an object of class MyClass by value. • 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. • What functions does C++ silently write and call? Constructors, destructors, copy constructors, assignment operators, and address-of operators. • Does the compiler guarantee that initializers will be executed in the same order as they appear on the initialization list? No. C++ guarantees that base class subobjects and member objects will be destroyed in the opposite order from which they were constructed. This means that initializers are executed in the order, which supports the above-mentioned guarantee C/C++ Interview Questions 1. What is the output of printf("%d") 2. Difference between "C structure" and "C++ structure". 3. Difference between a "assignment operator" and a "copy constructor" 4. What is the difference between "overloading" and "overriding"? 5. Explain the need for "Virtual Destructor". 6. Can we have "Virtual Constructors"? 7. What are the different types of polymorphism? 8. What are Virtual Functions? How to implement virtual functions in "C" 9. What are the different types of Storage classes? 10. What is Namespace? 11. What are the types of STL containers?. 12. Difference between "vector" and "array"? 13. How to write a program such that it will delete itself after execution? 14. Can we generate a C++ source code from the binary file? 15. What are inline functions? 16. Talk something a out profiling? 17. How many lines of code you have written for a single program? 18. What is "strstream" ? 19. How to write Multithreaded applications using C++? 20. Explain "passing by value", "passing by pointer" and "passing by reference" 21. Write any small program that will compile in "C" but not in "C++" 22. Have you heard of "mutable" keyword? 23. What is a "RTTI"? 24. Is there something that I can do in C and not in C++? 25. Why preincrement operator is faster than postincrement? 26. What is the difference between "calloc" and "malloc"? 27. What will happen if I allocate memory using "new" and free it using "free" or allocate using "calloc" and free it using "delete"? 28. What is Memory Alignment? 29. Explain working of printf. 30. Difference between "printf" and "sprintf". 31. What is "map" in STL? 32. When shall I use Multiple Inheritance? 33. What are the techniques you use for debugging? 34. How to reduce a final size of executable? 35. Give 2 examples of a code optimization.

Comments

Popular posts from this blog

Data Structure Question and Anwers