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?

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
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
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education