对C++下struct 和 类默认继承的认识

 1 #include <iostream>
 2 using namespace std;
 3 struct  struct1{
 4     int data1 ;
 5     double data2 ;
 6     struct1(){
 7         (*this).data1 = data1 ;
 8         (*this).data2 = data2 ;
 9         cout<<"this is output by struct1 function !";
10     }
11     public : 
12     void privateFunc(){
13         cout<<"this is private function , so this massage should never show in console ! \n";
14     }
15 };
16 struct struct2 : struct1{
17     /*
18     
19     according the result in console , we can get the conclusion :
20     
21     the default inherit method of struct is public 
22 
23     */
24 };
25 class class1 : public  struct1 {
26     /*
27     
28     if ignore 'public' identifiers , compile will show that privateFunc() in 35 line 
29     
30     can't access, this indicate that it is private inhert when subclass is a struct. 
31     
32     */
33     string name ;
34     public :
35     class1(){
36         name = "i'm a class !";
37         cout<<"this is output by class1 !";
38     }
39 };
40 class class2{
41     public :
42     void showClass2(){
43         cout<<"this is output by class2 ! \n ";
44     }
45 };
46 class class3 : class2{
47     /*
48 
49     according to the result : showClass2 can't accessiable can prove class default 
50     
51     inherit method is private 
52 
53     */
54 };
55 struct struct4 : class2{
56     /*
57 
58     default inherit is public 
59     
60     */
61 };
62 class class4 : struct1 {
63     /*
64 
65     default inherit is private 
66     */
67 }
68 int main(){
69     //struct2 onestruct2 ;
70     //onestruct2.privateFunc();    
71     /* test class default inherit */
72     //class3 * oneclass3 = class3;
73     //oneclass3->showClass2();
74     /* test struct inherit class */
75     //struct4 onestruct4 ;
76     //onestruct4.showClass2();
77     class4 * oneclass4;
78     oneclass4->privateFunc();
79     return 0;
80 }
原文地址:https://www.cnblogs.com/caiyao/p/3659804.html