DERIVED.CPP
上传用户:wszmarenbt
上传日期:2013-04-26
资源大小:2552k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. //THIS PROGRAM IS THE FIRST STEP TO LEARN THE DERIVED CLASS
  2. //FILE DERIVED.CPP
  3. #include <stdio.h>
  4. #include <conio.h>
  5. class PARENT
  6. {
  7. private :
  8. int NUM_1;
  9. public :
  10. PARENT(){};
  11. void ASSIGN_PRI_1(int NUM1)
  12. {
  13. NUM_1=NUM1;
  14. }
  15. void NUM_1_INC()
  16. {
  17. NUM_1+=1;
  18. }
  19. void DISPLAY()
  20. {
  21. printf("n NUM_1(PARENT PRIVATE NUMBER)=%d",NUM_1);
  22. }
  23. int GET_NUM_1()
  24. {
  25. return NUM_1;
  26. }
  27. };
  28. class PRIVATE_DERIVED : private PARENT //Private Inherit
  29. {
  30. private :
  31. int NUM_2;
  32. public :
  33. PRIVATE_DERIVED(int NUM2)
  34. {
  35. NUM_2=NUM2;
  36. }
  37. void ASSIGN_PRI_1(int NUM1)
  38. {
  39. PARENT::ASSIGN_PRI_1(NUM1);
  40. }
  41. void NUM_1_INC()
  42. {
  43. if (NUM_2>5)
  44. PARENT::NUM_1_INC();
  45. }
  46. void NUM_2_INC()
  47. {
  48. NUM_2+=1;
  49. }
  50. void DISPLAY()
  51. {
  52. PARENT::DISPLAY();
  53. printf("n NUM_2(PRIVATE DERIVED PRIVATE NUMBER)=%dn",NUM_2);
  54. }
  55. };
  56. class PUBLIC_DERIVED : public PARENT //Public Inherit
  57. {
  58. private :
  59. int NUM_3;
  60. public :
  61. PUBLIC_DERIVED(int NUM3)
  62. {
  63. NUM_3=NUM3;
  64. }
  65. void NUM_1_INC()
  66. {
  67. if (PARENT::GET_NUM_1()<20)
  68. PARENT::NUM_1_INC();
  69. }
  70. void NUM_3_INC()
  71. {
  72. NUM_3+=1;
  73. }
  74. void DISPLAY()
  75. {
  76. PARENT::DISPLAY();
  77. printf("n NUM_3(PUBLIC DERIVED PRIVATE NUMBER)=%d",NUM_3);
  78. }
  79. };
  80. int main(void)
  81. {
  82. clrscr();
  83. PARENT PRE;
  84. printf("nnBEFORE increasing :");
  85. PRIVATE_DERIVED PRI_D(2);
  86. PRI_D.ASSIGN_PRI_1(99);
  87. PRI_D.DISPLAY();
  88. printf("nnAFTER increasing : ");
  89. PRI_D.NUM_1_INC();
  90. PRI_D.NUM_2_INC();
  91. PRI_D.DISPLAY();
  92. printf("nn----  Because NUM_2 < 5,NUM_1 did not increase!  ----");
  93. printf("nnPRESS ANY KEY TO CONTINUE... ...");
  94. getch();
  95. clrscr();
  96. printf("nnBEFORE increasing :");
  97. PUBLIC_DERIVED PUB_D(2);
  98. PUB_D.ASSIGN_PRI_1(25);
  99. PUB_D.DISPLAY();
  100. printf("nnAFTER increasing : ");
  101. PUB_D.NUM_1_INC();
  102. PUB_D.NUM_3_INC();
  103. PUB_D.DISPLAY();
  104. printf("nn----  Because NUM_1 > 20,NUM_1 did not increase!  ----");
  105. printf("nnPRESS ANY KEY TO CONTINUE... ...");
  106. getch();
  107. clrscr();
  108. printf("nnBEFORE increasing :");
  109. PUB_D.ASSIGN_PRI_1(25);
  110. PUB_D.DISPLAY();
  111. printf("nnAFTER increasing : ");
  112. PUB_D.PARENT::NUM_1_INC();
  113. PUB_D.NUM_3_INC();
  114. PUB_D.DISPLAY();
  115. printf("nn----  Because use the NUM_1_INC() of PARENT CLASS,"
  116. " the limitation in PUBLIC_DERIVED did not available!"
  117. "   Though NUM_1 > 20 ,NUM_1 increased !");
  118. printf("nnPRESS ANY KEY TO EXIT... ...");
  119. getch();
  120. return 0;
  121. }