次のコードの出力結果は何ですか?

7740 ワード

 1 #include <iostream>

 2 

 3 using namespace std;

 4 

 5 class A

 6 {

 7 protected:

 8     int m_data;

 9 

10 public:

11     A(int data = 0)

12     {

13         m_data = data;

14     }

15     int GetData()

16     {

17         return doGetData();

18     }

19 

20     virtual int doGetData()

21     {

22         return m_data;

23     }

24 };

25 

26 class B: public A

27 {

28 protected:

29     int m_data;

30 

31 public:

32     B(int data = 1)

33     {

34         m_data = data;

35     }

36 

37 

38     int doGetData()

39     {

40         return m_data;

41     }

42 };

43 

44 

45 class C: public B

46 {

47 protected:

48     int m_data;

49 

50 public:

51     C(int data = 2)

52     {

53         m_data = data;

54     }

55 

56 };

57 

58 int main()

59 {

60     C c(10);

61 

62     cout << c.GetData()<<endl;

63     cout << c.A::GetData()<<endl;

64     cout << c.B::GetData()<<endl;

65     cout << c.C::GetData()<<endl;

66     cout << c.doGetData()<<endl;

67     cout << c.A::doGetData()<<endl;

68     cout << c.B::doGetData()<<endl;

69     cout << c.C::doGetData()<<endl;

70 

71     cout<<endl;

72     system("pause");

73 

74     return 0;

75 }

しゅつりょく
1
1
1
1
1
0
1
1
 
近接呼び出しでは、親世代に関連インタフェースがある場合は親世代インタフェースを優先し、親世代に関連インタフェースがない場合は祖父世代インタフェースを呼び出すことに注意してください.