fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class ParentClass {
  5. public:
  6. void test(ParentClass* obj);
  7. protected:
  8. virtual void getProtected();
  9. private:
  10. virtual void getPrivate();
  11. };
  12.  
  13. class ChildClass: public ParentClass{
  14. protected:
  15. virtual void getProtected();
  16. private:
  17. virtual void getPrivate();
  18. };
  19.  
  20.  
  21. //private virtual
  22. void ParentClass::getPrivate(){
  23. cout << "ParentClass private";
  24. }
  25. //protected virtual
  26. void ParentClass::getProtected(){
  27. cout << "ParentClass protected";
  28. }
  29. //public
  30. void ParentClass::test(ParentClass* obj) {
  31. obj->getProtected();
  32. obj->getPrivate();
  33. };
  34.  
  35. //private virtual
  36. void ChildClass::getPrivate(){
  37. cout << "ChildClass private";
  38. }
  39. //protected virtual
  40. void ChildClass::getProtected(){
  41. cout << "ChildClass protected";
  42. }
  43.  
  44.  
  45. int main() {
  46. cout << "test";
  47. (new ParentClass)->test(new ChildClass);
  48. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
testChildClass protectedChildClass private