struct vs class in C++

 

  在C++中,除了以下几点外,struct和class是相同的。

  (1)class的成员的默认访问控制是private,而struct的成员的默认访问权限是public。

  例如,program 1会编译失败,而program 2可正常运行。

 

 1 // Program 1
 2 #include <stdio.h>
 3  
 4 class Test 
 5 {
 6     int x; // x is private
 7 };
 8 
 9 int main()
10 {
11   Test t;
12   t.x = 20; // compiler error because x is private
13   getchar();
14   return 0;
15 }
16 
17 // Program 2
18 #include <stdio.h>
19  
20 struct Test 
21 {
22     int x; // x is public
23 };
24 
25 int main()
26 {
27   Test t;
28   t.x = 20; // works fine because x is public
29   getchar();
30   return 0;
31 }

 

 

  (2)在继承体系中,当struct继承自struct/class时,对于base struct/class的默认访问控制是public。但当class继承自struct/class时,对base struct/class的默认访问控制是private。

  例如,program 3会编译失败,而program 4可正常运行。

 1 // Program 3
 2 #include <stdio.h>
 3  
 4 class Base 
 5 {
 6 public:
 7     int x;
 8 };
 9  
10 class Derived : Base 
11 { 
12 }; // is equilalent to class Derived : private Base {}
13  
14 int main()
15 {
16   Derived d;
17   d.x = 20; // compiler error becuase inheritance is private
18   getchar();
19   return 0;
20 }
21 
22 // Program 4
23 #include <stdio.h>
24  
25 class Base 
26 {
27 public:
28     int x;
29 };
30  
31 struct Derived : Base 
32 { 
33 }; // is equilalent to struct Derived : public Base {}
34  
35 int main()
36 {
37   Derived d;
38   d.x = 20; // works fine becuase inheritance is public
39   getchar();
40   return 0;
41 }

 

  总结:

  对于struct和class的不同点就在于:默认访问控制不同,struct为public,class为private。

  而这个不同体现在两个地方:一是成员的默认访问控制;二是继承体系中对基类的默认访问控制。

 

 

  Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

 

 

 

 

 

 

  转载请注明:http://www.cnblogs.com/iloveyouforever/

  2013-11-25  19:52:01

posted @ 2013-11-25 19:53  虔诚的学习者  阅读(431)  评论(0编辑  收藏  举报