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?
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
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?
Step by step
Solved in 4 steps with 1 images