Sample Data Structures Questions - Chapter 2
Sample Data Structures Questions - Chapter 2
Chapter 2
Abstract Data Types and C++ Classes
Data Structures and Other Objects Using C++
by Michael Main and Walter Savitch
ISBN 0-8053-7470-1, Softcover, 784 pages, 1997
class Throttle
{
public:
void shut_off();
double flow();
...
private:
int position;
};
Write several lines of C++ code to declare a Throttle called quiz, activate
the member function that shuts off quiz's flow, and then print the current
flow from quiz.
The public part of the Throttle declaration from class notes is shown below.
Mark each function member header as follows: Mark C for any constructor; mark
X for any function that is forbidden from changing the throttle�s data fields.
class Throttle
{
public:
Throttle( );
Throttle(int size);
void shut_off( );
void shift(int amount);
double flow( ) const;
bool is_on( ) const;
...
class Small
{
public:
Small( );
void k() const;
void h(int i);
friend f(Small z);
private:
int size;
};
Suppose that x and y are both Small objects. Write the word "legal" or
"illegal" in each location of this table to indicate whether the indicated
statement is legal or illegal in these locations: StatementIn a main
programIn the const member function kIn the friend function f
x = y;...
x.size = y.size;...
x.size = 3;...
x.h(42);...
Suppose that you define a new class called Foo. For two Foo objects x and y,
you would like the expression x+y to be a new Foo object. What is the
prototype of the function that you must write to enable expressions such as
x+y?
Write one clear sentence telling me when it would be appropriate to declare a
function as a friend of some class.
Multiple Choice
Multiple Choice
Section 2.1 - 2.2
Introduction to Classes
Here is the start of a class declaration:
class Foo
{
public:
void x(Foo f);
void y(const Foo f);
void z(Foo f) const;
...
Which of the three member functions can alter the PRIVATE member variables of
the Foo object that activates the function?
A. Only x can alter the private member variables of the object that
activates the function.
B. Only y can alter the private member variables of the object that
activates the function.
C. Only z can alter the private member variables of the object that
activates the function.
D. Two of the functions can alter the private member variables of the object
that activates the function.
E. All of the functions can alter the private member variables of the object
that activates the function.
Is it possible for a member function of a class to activate another member
function of the same class?
A. No.
B. Yes, but only public member functions.
C. Yes, but only private member functions.
D. Yes, both public and private member functions can be activated within
another member function.
Can two classes contain member functions with the same name?
A. No.
B. Yes, but only if the two classes have the same name.
C. Yes, but only if the main program does not declare both kinds
D. Yes, this is always allowed.
What is the common pattern of class definitions that is used in Chapter 2?
A. Member functions and member variables are both private.
B. Member functions are private, and member variables are public.
C. Member functions are public, and member variables are private.
D. Member functions and member variables are both public.
Consider this class definition:
class Quiz
{
public:
Quiz( );
int f( );
int g( ) const;
private:
double score;
};
Which functions can carry out an assignment score=1.0; to the private member
variable score?
A. Both f and g can carry out the assignment.
B. f can carry out the assignment, but not g.
C. g can carry out the assignment, but not f.
D. Neither f nor g can carry out the assignment.
What is the primary purpose of a default constructor?
A. To allow multiple classes to be used in a single program.
B. To copy an actual argument to a function's parameter.
C. To initialize each object as it is declared.
D. To maintain a count of how many objects of a class have been created.
Suppose that the Foo class does not have an overloaded assignment operator.
What happens when an assignment a=b; is given for two Foo objects?
A. The automatic assignment operator is used
B. The copy constructor is used
C. Compiler error
D. Run-time error
Multiple Choice
Section 2.4
Classes and Parameters
When should you use a const reference parameter?
A. Whenever the data type might be many bytes.
B. Whenever the data type might be many bytes, the function changes the
parameter within its body, and you do NOT want these changes to alter the
actual argument.
C. Whenever the data type might be many bytes, the function changes the
parameter within its body, and you DO want these changes to alter the actual
argument.
D. Whenever the data type might be many bytes, and the function does not
change the parameter within its body.
Here is a small function definition:
Suppose that a main program has two integer variables x and y, which are given
the value 0. Then the main program calls f(x,y); What are the values of x and
y after the function f finishes?
A. Both x and y are still 0.
B. x is now 1, but y is still 0.
C. x is still 0, but y is now 2.
D. x is now 1, and y is now 2.
Here is a function prototype and some possible function calls: