Upwork/oDesk C++ Programming Test
·
1. Consider the following class
hierarchy:
class Base
{
}
class Derived : public Base
{
}
Which of the following are true?
Answers:
• The
relationship between the Base and Derived can be described as: Base is a
Derived
• The
relationship between the Base and Derived can be described as: Base has a
Derived
• Derived can
access only public member functions of Base
• Derived can access public
and protected member functions of Base
• The following line of code
is valid: Base *object = new Derived();
2. Which of the following member
functions can be used to add an element in an std::vector?
Answers:
• add
• front
• push
• push_back
3. Which of the following are true
about class member functions and constructors?
Answers:
• A constructor
can return values but a member function cannot
• A member
function can declare local variables but a constructor cannot
• A member function can
return values but a constructor cannot
• A constructor
can declare local variables but a member function cannot
• A member
function can throw exceptions but a constructor cannot
4. Which of the following sets of
functions do not qualify as overloaded functions?
Answers:
• void fun(int, char
*) void fun(char *,int)
• void x(int,char) int
*x(int,char)
• int get(int)
int get(int,int)
• void F(int *)
void F(float *)
• All of the
above are overloaded functions
5. Which of the following statements
about function overloading, is true?
Answers:
• C++ and
namespaces should be used to replace occurrences of function overloading
• Overloaded
functions may not be declared as "inline"
• Although the
return types and parameter types of overloaded functions can be different, the
actual number of parameters cannot change
• Function overloading is
possible in both C and C++
• The parameter
lists and const keyword are used to distinguish functions of the same name
declared in the same scope
6. What linkage specifier do you use
in order to cause your C++ functions to have C linkage
Answers:
• extern "C"
• extern C
• _stdcall
• _cdecl
• _fastcall?
7. Which of the following are NOT
valid C++ casts
Answers:
• dynamic_cast
• einterpret_cast
• static_cast
• const_cast
• void_cast
8. What is the output of the following
code segment?
int n = 9;
int *p;
p=&n;
n++;
cout << *p+2 <<
"," << n;
Answers:
• 11,9
• 9,10
• 12,10
• 11,10
9. What will be the output of the
following code?
class b
{
int i;
public:
virtual void vfoo()
{
cout
<<"Base ";
}
};
class d1 : public b
{
int j;
public:
void vfoo()
{
j++;
cout
<<"Derived";
}
};
class d2 : public d1
{
int k;
};
void main()
{
b *p, ob;
d2 ob2;
p = &ob;
p->vfoo();
p = &ob2;
p->vfoo();
}
Answers:
• Base Base
• Base Derived
• Derived Base
• Derived Derived
10. Consider the sample code given
below and answer the question that follows.
1 class Car
2 {
3 private:
4 int Wheels;
5
6 public:
7 Car(int wheels = 0)
8 : Wheels(wheels)
9 {
10 }
11
12 int GetWheels()
13 {
14 return Wheels;
15 }
16 };
17 main()
18 {
19 Car c(4);
20 cout << "No of
wheels:" << c.GetWheels();
21 }
Which of the following lines from the
sample code above are examples of data member definition?
Answers:
• 4
• 7
• 8
• 14
• 19
11. Consider the sample code given
below and answer the question that follows.
class Shape
{
public:
virtual void draw() = 0;
};
class Rectangle: public Shape
{
public:
void draw()
{
// Code to draw rectangle
}
//Some more member functions.....
};
class Circle : public Shape
{
public:
void draw()
{
// Code to draw circle
}
//Some more member functions.....
};
int main()
{
Shape objShape;
objShape.draw();
}
What happens if the above program is
compiled and executed?
Answers:
• Object objShape
of Shape class will be created
• A compile time error will
be generated because you cannot declare Shape objects
• A compile time
error will be generated because you cannot call draw function of class 'Shape'
• A compile time
error will be generated because the derived class's draw() function cannot
override the base class draw() function
• None of the
above
12. Consider the sample code given
below and answer the question that follows.
class Person
{
public:
Person();
virtual
~Person();
};
class Student : public Person
{
public:
Student();
~Student();
};
main()
{
Person *p = new
Student();
delete p;
}
Why is the keyword "virtual"
added before the Person destructor?
Answers:
• To make it impossible
for this particular destructor to be overloaded
• To ensure that
correct destructor is called when p is deleted
• To ensure that the
destructors are called in proper orde
• To improve the
speed of class Person's destruction
• To prevent the
Person class from being instantiated directly making it an abstract base class
13. You want the data member of a
class to be accessed only by itself and by the class derived from it. Which
access specifier will you give to the data member?
Answers:
• Public
• Private
• Protected
• Friend
• Either Public
or Friend
14. Consider the sample code given
below and answer the question that follows.
class Person
{
string name;
int age;
Person *spouse;
public:
Person(string
sName);
Person(string
sName, int nAge);
Person(const
Person& p);
Copy(Person *p);
Copy(const Person
&p);
SetSpouse(Person
*s);
};
Which one of the following are
declarations for a copy constructor?
Answers:
• Person(string sName);
• Person(string
sName, int nAge);
• Copy(Person
*p);
• Person(const Person
&p);
• Copy(const
Person &p)?
15. Sample Code
typedef char *monthTable[3];
Referring to the code above, which of
the following choices creates two monthTable arrays and initializes one of the
two?
Answers:
•
monthTable(winter,spring={"March","April","May"});
• monthTable
winter, spring;
• monthTable,
winter, spring;
• monthTable,
winter,spring={"March","April","May"};
• monthTable
winter,spring={"March","April","May"};
16. Consider the sample code given
below and answer the question that follows:
<font size=2>
char **foo;
/* Missing
code goes here */
for(int i = 0;
i < 200; i++)
{
foo[i]
= new char[100];
}
Referring to the sample code above,
what is the missing line of code?
</font
Answers:
• font
size=2>foo = new *char[200];</font
• font
size=2>foo = new char[200];</font
• font
size=2>foo = new char[200]*;</font
• font size=2>foo = new
char*[200];</font
• font
size=2>foo = new char[][200];</font
17. Consider the line of code given
below and answer the question that follows.
class screen;
Which of the following statements are
true about the class declaration above?
Answers:
• Incorrect
syntax. The body of the class declaration is missing
• Incorrect
syntax. {}; is missing
• The syntax is correct
• Incorrect
syntax. {} is missing
• Incorrect
syntax. Requires a *
18. Consider the following code:
#include<stdio.h>
int main(int argc, char* argv[])
{
enum Colors
{
red,
blue,
white = 5,
yellow,
green,
pink
};
Colors color = green;
printf("%d", color);
return 0;
}
What will be the output when the above
code is compiled and executed?
Answers:
• 4
• 5
• 6
• 7
• 8
• 9
• The code will
have compile time errors
19. What access specifier allows only
the class or a derived class to access a data membe
Answers:
• private
• protected
• default
• virtual
• public
20. Consider the following code:
#define SQ(a) (a*a)
int answer = SQ(2 + 3);
What will be the value of answer after
the above code executes?
Answers:
• 10
• 11
• 25
• 13
• None of the
above
21. If input and output operations
have to be performed on a file, an object of the _______ class should be
created.
Answers:
• fstream
• iostream
• ostream
• istream
• None
22. In the given sample Code, is the
constructor definition valid?
class someclass
{
int var1, var2;
public:
someclass(int num1, int num2) : var1(num1), var2(num2)
{
}
};
Answers:
• Yes, it is valid
• No, we cannot
assign values like this
• No, the
parenthesis cannot be empty
• No, var1 and
var2 are not functions but are variables
23. Consider the sample code given
below and answer the question that follows.
template <class T> Run(T
process);
Which one of the following is an
example of the sample code given above?
Answers:
• A non-template member
function
• A template
function definition
• A template function
declaration
• A template
class definition
• A template
class declaration
24. Which of the following statements
regarding functions are false?
Answers:
• Functions can
be overloaded
• Functions can
return the type void
• Inline
functions are expanded during compile time to avoid invocation overhead
• You can create arrays of
functions
• You can pass
values to functions by reference arguments
• You can return
values from functions by reference arguments
• A function can
return a pointe
25. What does ADT stand for?
Answers:
• Accessible
derived type
• Access to
derived type
• Abstract data type
• Abstract
derived type
• Accessible data
type
26. Consider the following code:
#include<iostream>
using namespace std;
class A
{
public :
A()
{
cout << "Constructor of A\n";
};
~A()
{
cout << "Destructor of A\n";
};
};
class B : public A
{
public :
B()
{
cout << "Constructor of B\n";
};
~B()
{
cout << "Destructor of B\n";
};
};
int main()
{
B *pB;
pB = new B();
delete pB;
return 0;
}
What will be the printed output?
Answers:
• Constructor of
B Constructor of A Destructor of A Destructor of B
• Constructor of A
Constructor of B Destructor of B Destructor of A
• Constructor of
B Constructor of A Destructor of B Destructor of A
• Constructor of
A Constructor of B Destructor of A Destructor of B
• The sequence of
construction and destruction of A and B will be compiler specific
27. Consider the following code:
<font size=2>
template<class T> void Kill(T
*& objPtr)
{
delete objPtr;
objPtr = NULL;
}
class MyClass
{
};
void Test()
{
MyClass *ptr = new
MyClass();
Kill(ptr);
Kill(ptr);
}
</font>
Invoking Test() will cause which of
the following?
Answers:
• Code will Crash
or Throw and Exception
• Code will
Execute, but there will be a memory leak
• Code will execute properly
• Code will
exhibit undefined behavio
28. Consider the following statements
relating to static member functions and choose the appropriate options:
1. They have external linkage
2. They do not have 'this' pointers
3. They can be declared as virtual
4. They can have the same name as a
non-static function that has the same argument types
Answers:
• All are true
• Only 1, 2 and 4
are true
• Only 1 and 2 are true
• Only 1,3 and 4
are true
• All are false
29. Consider the following code:
class A {
typedef int I; // private member
I f();
friend I g(I);
static I x;
};
Which of the following are valid:
Answers:
• A::I A::f() { return 0; }
• A::I g(A::I p =
A::x);
• A::I g(A::I p)
{ return 0; }
• A::I A::x = 0;
30. Consider the following code:
#include<iostream>
using namespace std;
int main()
{
cout << "The value of
__LINE__ is " <<__LINE__;
return 0;
}
What will be the result when the above
code is compiled and executed?
Answers:
• The compilation
will fail with the error - '__LINE__' : undeclared identifie
• The compilation
will fail with the error - '__LINE__' unresolved identifie
• The code will compile and
run without errors
• The code will
crash at runtime
31. Which of the following STL classes
is deprecated (i.e. should no longer be used)?
Answers:
• ostrstream
• ostringstream
• ostream
• wostream