fork download
  1. // your code goes here
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class Employee {
  6. private:
  7. int empID;
  8. double salary;
  9.  
  10. protected:
  11. // Protected getter allows Manager (child) to access salary indirectly
  12. double getSalary() const {
  13. return salary;
  14. }
  15.  
  16. public:
  17. Employee(int id, double s) {
  18. empID = id;
  19. salary = s;
  20. }
  21.  
  22. void display() {
  23. cout << "Employee id: " << empID << " Salary: " << salary << " Taka\n";
  24. }
  25.  
  26. int getID() const { return empID; }
  27. };
  28.  
  29. class Manager : public Employee {
  30. public:
  31. Manager(int id, double sal) : Employee(id, sal) {}
  32.  
  33. void displaymanager() {
  34. cout << "Manager id: " << getID()
  35. << " Salary: " << getSalary() << " Taka\n";
  36. }
  37. };
  38.  
  39. class AssistantManager : public Manager {
  40. public:
  41. AssistantManager(int id, double s) : Manager(id, s) {}
  42.  
  43. void displayassisman() {
  44. // ❌ Cannot access salary directly or via getSalary()
  45. // Because getSalary() is protected in Employee, and Manager didn’t expose it publicly
  46. cout << "Assistant Manager id: " << getID()
  47. << " Salary info unavailable (no direct access)\n";
  48. }
  49. };
  50.  
  51. int main() {
  52. Employee em(32564, 123435.8);
  53. em.display();
  54.  
  55. Manager m(6674, 324.5);
  56. m.displaymanager();
  57.  
  58. AssistantManager am(2345, 897.89);
  59. am.displayassisman();
  60.  
  61. return 0;
  62. }
  63.  
Success #stdin #stdout 0.01s 5292KB
stdin
Standard input is empty
stdout
Employee id: 32564 Salary: 123436 Taka
Manager id: 6674 Salary: 324.5 Taka
Assistant Manager id: 2345 Salary info unavailable (no direct access)