当前位置:   article > 正文

class与struct_c++ class中包含结构体

c++ class中包含结构体

在C++中class与struct之间区别不大,两者有很大的相似性。保留struct是为了向下兼容,所以C++中保留了很多C的东西。

有关结构体和类具体可以参考以下链接:

1.struct

  • C中,struct包含不同数据类型的数据结构体
  • C++中,struct做了扩充,与class的功能类似:
    • 可以包含成员函数
    • 可以实现继承
    • 可以实现多态

2.struct与class的区别

  • 定义语法关键字不同(struct/class)
  • struct是值类型,class是引用类型,
  • struct存储在栈中,但其中定义的引用类型是存储在堆中的
  • struct中字段不能赋初始值,class中字段没有影响
  • struct不能定义无参数的构造方法,且在有参构造函数中必须为所有字段和属性赋值
  • struct中有参构造方法不会覆盖默认的无参构造方法,即可以new无参的结构,class中有参构造方法会覆盖默认的无参构造方法,即无法调用默认无参构造方法,因此在class中最好定义一个无参构造方法,防止new创建对象失败。
  • struct不能定义析构方法,class可以
  • struct可以继承接口不可以继承class,class既可以继承接口,又可以继承class
     
  • 默认访问权限。struct作为数据结构的实现体,数据的默认访问是public;class作为对象的实现体,默认的访问是private。虽然struct作为数据结构的实现体可以像class一样使用,但是在这里依旧将struct里的变量称为数据,class里的变量称为成员。
  • 默认的继承访问权不同。class默认是private,struct默认是public。即class默认继承方式是private继承,而struct是public继承。所以类定义时要求指定继承方式。
  • class关键字可用于定义模板参数,类似于typename,但struct关键字不可用于定义模板参数。如class定义模板类:
  1. template<class T>
  2. class A {
  3. A(T num);
  4. };

3 小结

struct是一种特殊的值类型,栈的空间小,访问速度快,struct适用于字段、属性较少,作为一种组合类型使用,而class作为一种面向对象拓展的类型使用。

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

闽ICP备14008679号