fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. using type_t = int;
  5. type_t test = 777;
  6.  
  7. class Base {
  8. public:
  9. Base() : cA(A_var) { A_var = test++; }
  10. void demo() { f(); cout << "base:"<<A_var<<endl; A_var++;}
  11. protected:
  12. const type_t& cA;
  13. private:
  14. type_t A_var;
  15. void f();
  16. };
  17.  
  18. class Derived : public Base{
  19. public:
  20. void g();
  21. void demo() { g(); cout << "derived:"<<cA<<endl; }
  22. };
  23.  
  24. //access in Base class
  25. void Base::f() {
  26. type_t value = A_var;
  27. A_var = value;
  28. }
  29.  
  30. //access in Derived class
  31. void Derived::g() {
  32. type_t value = cA;
  33. //cA = value; //Error, const reference; good
  34. }
  35.  
  36. class OldBase {
  37. public:
  38. OldBase() { A_var = test++; }
  39. void demo() { f(); cout << "base:"<<A_var<<endl; A_var++;}
  40. private:
  41. type_t A_var;
  42. void f();
  43. };
  44.  
  45. int main() {
  46. cout << sizeof (Base)<<endl;
  47. cout << sizeof (OldBase)<<endl;
  48. Base b;
  49. Derived d;
  50. b.demo();
  51. d.demo();
  52. // your code goes here
  53. return 0;
  54. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
8
4
base:777
derived:778