Consider the following class declarations in C++: class C { protected: int x; public: void f(){...}; }; class C1: public C { protected: int x1; public: void h(C *obj){...}; }; class C2: public C1 { public: int x2; }; class C3: public C { public: f(){...}; }; i. Draw the class hierarchy ii. Assume that main contains the following declaration: C1 obj1; For each of the following expressions, say whether it is allowed in the code of main or not (they can be forbidden either because they violate the class definition or the protection mechanism) obj1.x , obj1.f() , obj1.x1 , obj1.x2 iii. Assume that the body of C1::h contains the following declarations C2 *obj2; C3 *obj3; For each of the following expressions, say whether it is allowed in the body of C1::h or not obj->x , obj2->x , obj3->x iv. Assume that the body of C1::h contains the following statement obj->f(); Assume that we call C1::h with a parameter (pointing to an object) of class And what would be the method executed if f were declared virtual in C?

C++ Programming: From Problem Analysis to Program Design
8th Edition
ISBN:9781337102087
Author:D. S. Malik
Publisher:D. S. Malik
Chapter10: Classes And Data Abstraction
Section: Chapter Questions
Problem 29SA
icon
Related questions
Question
100%

Consider the following class declarations in C++:
class C {
protected: int x;
public: void f(){...};
};
class C1: public C {
protected: int x1;
public: void h(C *obj){...};
};
class C2: public C1 {
public: int x2;
};
class C3: public C {
public: f(){...};
};
i. Draw the class hierarchy
ii. Assume that main contains the following declaration:
C1 obj1;
For each of the following expressions, say whether it is allowed in the code of main or not (they can be forbidden either because they violate the class
definition or the protection mechanism)
obj1.x , obj1.f() , obj1.x1 , obj1.x2
iii. Assume that the body of
C1::h contains the following declarations
C2 *obj2;
C3 *obj3;
For each of the following expressions, say whether it is allowed in the body
of
C1::h
or not
obj->x , obj2->x , obj3->x
iv. Assume that the body of
C1::h contains the following statement
obj->f();
Assume that we call C1::h with a parameter (pointing to an object) of class
And what would be the method executed if f were declared virtual in C?

Expert Solution
steps

Step by step

Solved in 4 steps with 1 images

Blurred answer
Knowledge Booster
Data members
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning
EBK JAVA PROGRAMMING
EBK JAVA PROGRAMMING
Computer Science
ISBN:
9781337671385
Author:
FARRELL
Publisher:
CENGAGE LEARNING - CONSIGNMENT