当前位置:   article > 正文

C/C++编程:c++中的struct_c++ struct类型前加struct来定义

c++ struct类型前加struct来定义

struct在在C和C++中的区别

  1. C语言中:struct是用户自定义数据类型(UDT);C++中struct是抽象数据类型(ADT),支持成员函数的定义,(C++中的struct能继承,能实现多态)。

  2. C++中,struct的成员默认访问说明符为public(为了与C兼容),class中的默认访问限定符为private,struct增加了访问权限,且可以和类一样有成员函数。

  3. struct作为类的一种特例是用来自定义数据结构的。一个结构标记声明后,在C中必须在结构标记前加上struct,才能做结构类型名(除:typedef struct class{};);C++中结构体标记(结构体名)可以直接作为结构体类型名使用,此外结构体struct在C++中被当作类的一种特例。

c++中struct和class的区别

从语法上来讲,class和struct做类型定义时只有两点区别

  • 默认继承权限:如果不明确指定,来自class的继承安置private继承处理,来自struct的继承安置public继承处理。
  • 默认访问权限:class的成员默认private权限,struct默认public权限
  1. #include <iostream>
  2. using namespace std;
  3. struct MyStruct {
  4. int my; //默认public
  5. };
  6. class MyClass {
  7. int my; //默认private
  8. public:
  9. void print()
  10. {
  11. cout << "MyClass public";
  12. }
  13. };
  14. struct MyStructSon : MyStruct { //默认继承权限是public
  15. };
  16. class MyClassSon :MyClass { //默认继承权限是private.
  17. };
  18. void main()
  19. {
  20. MyStruct mystruct1;
  21. MyClass myclass1;
  22. mystruct1.my = 1; //默认访问权限是公有,其对象可以访问
  23. //myclass1.my = 0; //默认访问权限是私有,其对象不可以直接访问
  24. myclass1.print();
  25. MyStructSon mystruSon;
  26. mystruSon.my = 11; //默认public继承,可以访问public数据
  27. cout << mystruct1.my << endl; //1,父亲是父亲的,虽然儿子可以继承老子,但是父亲的东西和儿子的东西是两个时间不同东西
  28. MyClassSon myclassSon;
  29. // myclassSon.print(); //因为默认是private继承,所以父类的所有权限都降级为private.
  30. system("pause");
  31. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/714943
推荐阅读
相关标签
  

闽ICP备14008679号